diff options
author | Joe George <joe@zeroc.com> | 2019-04-04 11:53:07 -0400 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2019-04-04 14:22:47 -0400 |
commit | 1bc0ac89a96c2899f85d434ac6ee70f83246e63f (patch) | |
tree | 1ef94290c536cee039b6495ae58f40716594a8a7 /swift/src/Ice/ObjectAdapterI.swift | |
parent | Fix warning with structure unmarshalling for struct map to class (diff) | |
download | ice-1bc0ac89a96c2899f85d434ac6ee70f83246e63f.tar.bz2 ice-1bc0ac89a96c2899f85d434ac6ee70f83246e63f.tar.xz ice-1bc0ac89a96c2899f85d434ac6ee70f83246e63f.zip |
Add admin facets
Diffstat (limited to 'swift/src/Ice/ObjectAdapterI.swift')
-rw-r--r-- | swift/src/Ice/ObjectAdapterI.swift | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/swift/src/Ice/ObjectAdapterI.swift b/swift/src/Ice/ObjectAdapterI.swift index ee2a91a2d2c..c09d30bf12b 100644 --- a/swift/src/Ice/ObjectAdapterI.swift +++ b/swift/src/Ice/ObjectAdapterI.swift @@ -14,9 +14,9 @@ private enum State { case dead } -private let serialQueue = DispatchQueue(label: "com.zeroc.ice.serial") +let serialQueue = DispatchQueue(label: "com.zeroc.ice.serial") -class ObjectAdapterI: LocalObject<ICEObjectAdapter>, ObjectAdapter, ICEObjectAdapterFacade { +class ObjectAdapterI: LocalObject<ICEObjectAdapter>, ObjectAdapter, ICEBlobjectFacade { let communicator: Communicator var servantManager: ServantManager var locator: LocatorPrx? @@ -27,12 +27,12 @@ class ObjectAdapterI: LocalObject<ICEObjectAdapter>, ObjectAdapter, ICEObjectAda init(handle: ICEObjectAdapter, communicator: Communicator, queue: DispatchQueue = serialQueue) { self.communicator = communicator - self.servantManager = ServantManager(adapterName: handle.getName(), communicator: communicator) - self.state = .alive + servantManager = ServantManager(adapterName: handle.getName(), communicator: communicator) + state = .alive self.queue = queue super.init(handle: handle) - handle.registerFacade(self) + handle.registerDefaultServant(self) } func getName() -> String { @@ -163,7 +163,6 @@ class ObjectAdapterI: LocalObject<ICEObjectAdapter>, ObjectAdapter, ICEObjectAda return try mutex.sync { try checkForDeactivation() - // TODO: check these vars are correct return try findFacet(id: proxy.ice_getIdentity(), facet: proxy.ice_getFacet()) } } @@ -225,7 +224,7 @@ class ObjectAdapterI: LocalObject<ICEObjectAdapter>, ObjectAdapter, ICEObjectAda func getLocator() -> LocatorPrx? { return mutex.sync { - return locator + locator } } @@ -251,11 +250,12 @@ class ObjectAdapterI: LocalObject<ICEObjectAdapter>, ObjectAdapter, ICEObjectAda return queue } - func facadeInvoke(_ is: ICEInputStream, con: ICEConnection, name: String, category: String, facet: String, - operation: String, mode: UInt8, context: [String: String], requestId: Int32, - encodingMajor: UInt8, encodingMinor: UInt8, + func facadeInvoke(_ adapter: ICEObjectAdapter, is: ICEInputStream, con: ICEConnection, name: String, + category: String, facet: String, operation: String, mode: UInt8, context: [String: String], + requestId: Int32, encodingMajor: UInt8, encodingMinor: UInt8, response: @escaping (Bool, UnsafeRawPointer?, Int) -> Void, exception: @escaping (ICERuntimeException) -> Void) { + precondition(_handle == adapter) let current = Current(adapter: self, con: con.assign(to: ConnectionI.self) { ConnectionI(handle: con) }, @@ -274,8 +274,11 @@ class ObjectAdapterI: LocalObject<ICEObjectAdapter>, ObjectAdapter, ICEObjectAda } func facadeRemoved() { - self.mutex.sync { + mutex.sync { self.state = .dead + // todo clear state + servantManager.destroy() + locator = nil } } @@ -290,5 +293,4 @@ class ObjectAdapterI: LocalObject<ICEObjectAdapter>, ObjectAdapter, ICEObjectAda throw IllegalIdentityException(id: id) } } - } |