zeroc-ice 3.7.10.1__cp312-cp312-win_amd64.whl → 3.8.0.post1__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- Glacier2/CannotCreateSessionException.py +40 -0
- Glacier2/IdentitySet.py +293 -0
- Glacier2/IdentitySet_forward.py +10 -0
- Glacier2/PermissionDeniedException.py +40 -0
- Glacier2/PermissionsVerifier.py +189 -0
- Glacier2/PermissionsVerifier_forward.py +10 -0
- Glacier2/Router.py +661 -0
- Glacier2/Router_forward.py +10 -0
- Glacier2/SSLInfo.py +62 -0
- Glacier2/SSLPermissionsVerifier.py +186 -0
- Glacier2/SSLPermissionsVerifier_forward.py +10 -0
- Glacier2/SSLSessionManager.py +192 -0
- Glacier2/SSLSessionManager_forward.py +10 -0
- Glacier2/Session.py +161 -0
- Glacier2/SessionControl.py +407 -0
- Glacier2/SessionControl_forward.py +10 -0
- Glacier2/SessionManager.py +189 -0
- Glacier2/SessionManager_forward.py +10 -0
- Glacier2/SessionNotExistException.py +39 -0
- Glacier2/Session_forward.py +10 -0
- Glacier2/StringSet.py +289 -0
- Glacier2/StringSet_forward.py +10 -0
- Glacier2/__init__.py +79 -226
- Glacier2/py.typed +0 -0
- Ice/AdapterAlreadyActiveException.py +35 -0
- Ice/AdapterNotFoundException.py +35 -0
- Ice/BTEndpointType.py +18 -0
- Ice/BTSEndpointType.py +18 -0
- Ice/Blobject.py +42 -0
- Ice/BoolSeq.py +10 -0
- Ice/Builtin.py +11 -0
- Ice/ByteSeq.py +10 -0
- Ice/Communicator.py +633 -0
- Ice/CompressBatch.py +25 -0
- Ice/Context.py +10 -0
- Ice/Current.py +47 -0
- Ice/Dispatch.py +122 -0
- Ice/DoubleSeq.py +10 -0
- Ice/EncodingVersion.py +41 -0
- Ice/EndpointSelectionType.py +22 -0
- Ice/EventLoopAdapter.py +52 -0
- Ice/Exception.py +27 -0
- Ice/FloatSeq.py +10 -0
- Ice/FormatType.py +22 -0
- Ice/Future.py +375 -0
- Ice/IcePyTypes.py +49 -0
- Ice/Identity.py +40 -0
- Ice/IdentitySeq.py +12 -0
- Ice/ImplicitContext.py +119 -0
- Ice/InitializationData.py +65 -0
- Ice/IntSeq.py +10 -0
- Ice/InvalidReplicaGroupIdException.py +34 -0
- Ice/InvocationFuture.py +155 -0
- Ice/LocalException.py +12 -0
- Ice/LocalExceptions.py +534 -0
- Ice/Locator.py +332 -0
- Ice/LocatorFinder.py +163 -0
- Ice/LocatorFinder_forward.py +10 -0
- Ice/LocatorRegistry.py +387 -0
- Ice/LocatorRegistry_forward.py +10 -0
- Ice/Locator_forward.py +10 -0
- Ice/LogMessage.py +51 -0
- Ice/LogMessageSeq.py +12 -0
- Ice/LogMessageType.py +51 -0
- Ice/LogMessageTypeSeq.py +12 -0
- Ice/Logger.py +100 -0
- Ice/LoggerAdmin.py +380 -0
- Ice/LoggerAdmin_forward.py +10 -0
- Ice/LongSeq.py +10 -0
- Ice/Object.py +150 -0
- Ice/ObjectAdapter.py +621 -0
- Ice/ObjectNotFoundException.py +35 -0
- Ice/ObjectProxySeq.py +12 -0
- Ice/ObjectPrx.py +934 -0
- Ice/ObjectPrx_forward.py +7 -0
- Ice/ObjectSeq.py +12 -0
- Ice/OperationMode.py +52 -0
- Ice/Process.py +217 -0
- Ice/ProcessLogger.py +41 -0
- Ice/Process_forward.py +10 -0
- Ice/Properties.py +371 -0
- Ice/PropertiesAdmin.py +302 -0
- Ice/PropertiesAdmin_forward.py +10 -0
- Ice/PropertyDict.py +10 -0
- Ice/ProtocolVersion.py +39 -0
- Ice/Proxy.py +126 -0
- Ice/RemoteLogger.py +238 -0
- Ice/RemoteLoggerAlreadyAttachedException.py +34 -0
- Ice/RemoteLogger_forward.py +10 -0
- Ice/ReplyStatus.py +91 -0
- Ice/Router.py +322 -0
- Ice/RouterFinder.py +163 -0
- Ice/RouterFinder_forward.py +10 -0
- Ice/Router_forward.py +10 -0
- Ice/SSLEndpointType.py +18 -0
- Ice/ServantLocator.py +88 -0
- Ice/ServerNotFoundException.py +34 -0
- Ice/ShortSeq.py +10 -0
- Ice/SliceChecksumDict.py +10 -0
- Ice/SliceInfo.py +22 -0
- Ice/SlicedData.py +14 -0
- Ice/StringSeq.py +10 -0
- Ice/TCPEndpointType.py +18 -0
- Ice/ToStringMode.py +34 -0
- Ice/UDPEndpointType.py +18 -0
- Ice/URIEndpointType.py +18 -0
- Ice/UnknownSlicedValue.py +39 -0
- Ice/UserException.py +18 -0
- Ice/Util.py +171 -0
- Ice/Value.py +59 -0
- Ice/Value_forward.py +7 -0
- Ice/WSEndpointType.py +18 -0
- Ice/WSSEndpointType.py +18 -0
- Ice/_ArrayUtil.py +51 -0
- Ice/_LoggerI.py +32 -0
- Ice/__init__.py +369 -2008
- Ice/asyncio/EventLoopAdapter.py +31 -0
- Ice/asyncio/__init__.py +5 -0
- Ice/iAPEndpointType.py +18 -0
- Ice/iAPSEndpointType.py +18 -0
- Ice/py.typed +0 -0
- IceBox/AlreadyStartedException.py +34 -0
- IceBox/AlreadyStoppedException.py +34 -0
- IceBox/NoSuchServiceException.py +34 -0
- IceBox/ServiceManager.py +447 -0
- IceBox/ServiceManager_forward.py +10 -0
- IceBox/ServiceObserver.py +229 -0
- IceBox/ServiceObserver_forward.py +10 -0
- IceBox/__init__.py +33 -10
- IceBox/py.typed +0 -0
- IceGrid/AccessDeniedException.py +40 -0
- IceGrid/AdapterDescriptor.py +77 -0
- IceGrid/AdapterDescriptorSeq.py +12 -0
- IceGrid/AdapterDynamicInfo.py +46 -0
- IceGrid/AdapterDynamicInfoSeq.py +12 -0
- IceGrid/AdapterInfo.py +50 -0
- IceGrid/AdapterInfoSeq.py +12 -0
- IceGrid/AdapterNotExistException.py +40 -0
- IceGrid/AdapterObserver.py +338 -0
- IceGrid/AdapterObserver_forward.py +10 -0
- IceGrid/AdaptiveLoadBalancingPolicy.py +48 -0
- IceGrid/AdaptiveLoadBalancingPolicy_forward.py +10 -0
- IceGrid/Admin.py +3662 -0
- IceGrid/AdminSession.py +1406 -0
- IceGrid/AdminSession_forward.py +10 -0
- IceGrid/Admin_forward.py +10 -0
- IceGrid/AllocationException.py +40 -0
- IceGrid/AllocationTimeoutException.py +35 -0
- IceGrid/ApplicationDescriptor.py +89 -0
- IceGrid/ApplicationDescriptorSeq.py +12 -0
- IceGrid/ApplicationInfo.py +63 -0
- IceGrid/ApplicationInfoSeq.py +12 -0
- IceGrid/ApplicationNotExistException.py +40 -0
- IceGrid/ApplicationObserver.py +374 -0
- IceGrid/ApplicationObserver_forward.py +10 -0
- IceGrid/ApplicationUpdateDescriptor.py +118 -0
- IceGrid/ApplicationUpdateInfo.py +51 -0
- IceGrid/BadSignalException.py +40 -0
- IceGrid/BoxedDistributionDescriptor.py +49 -0
- IceGrid/BoxedDistributionDescriptor_forward.py +10 -0
- IceGrid/BoxedString.py +45 -0
- IceGrid/BoxedString_forward.py +10 -0
- IceGrid/CommunicatorDescriptor.py +79 -0
- IceGrid/CommunicatorDescriptor_forward.py +10 -0
- IceGrid/DbEnvDescriptor.py +55 -0
- IceGrid/DbEnvDescriptorSeq.py +12 -0
- IceGrid/DeploymentException.py +40 -0
- IceGrid/DistributionDescriptor.py +42 -0
- IceGrid/FileIterator.py +246 -0
- IceGrid/FileIterator_forward.py +10 -0
- IceGrid/FileNotAvailableException.py +49 -0
- IceGrid/FileParser.py +182 -0
- IceGrid/FileParser_forward.py +10 -0
- IceGrid/IceBoxDescriptor.py +55 -0
- IceGrid/IceBoxDescriptor_forward.py +10 -0
- IceGrid/LoadBalancingPolicy.py +45 -0
- IceGrid/LoadBalancingPolicy_forward.py +10 -0
- IceGrid/LoadInfo.py +43 -0
- IceGrid/LoadSample.py +45 -0
- IceGrid/Locator.py +232 -0
- IceGrid/Locator_forward.py +10 -0
- IceGrid/NodeDescriptor.py +71 -0
- IceGrid/NodeDescriptorDict.py +12 -0
- IceGrid/NodeDynamicInfo.py +57 -0
- IceGrid/NodeDynamicInfoSeq.py +12 -0
- IceGrid/NodeInfo.py +64 -0
- IceGrid/NodeNotExistException.py +40 -0
- IceGrid/NodeObserver.py +424 -0
- IceGrid/NodeObserver_forward.py +10 -0
- IceGrid/NodeUnreachableException.py +46 -0
- IceGrid/NodeUpdateDescriptor.py +92 -0
- IceGrid/NodeUpdateDescriptorSeq.py +12 -0
- IceGrid/ObjectDescriptor.py +48 -0
- IceGrid/ObjectDescriptorSeq.py +12 -0
- IceGrid/ObjectExistsException.py +44 -0
- IceGrid/ObjectInfo.py +46 -0
- IceGrid/ObjectInfoSeq.py +12 -0
- IceGrid/ObjectNotRegisteredException.py +44 -0
- IceGrid/ObjectObserver.py +347 -0
- IceGrid/ObjectObserver_forward.py +10 -0
- IceGrid/ObserverAlreadyRegisteredException.py +49 -0
- IceGrid/OrderedLoadBalancingPolicy.py +41 -0
- IceGrid/OrderedLoadBalancingPolicy_forward.py +10 -0
- IceGrid/ParseException.py +40 -0
- IceGrid/PermissionDeniedException.py +40 -0
- IceGrid/PropertyDescriptor.py +39 -0
- IceGrid/PropertyDescriptorSeq.py +12 -0
- IceGrid/PropertySetDescriptor.py +49 -0
- IceGrid/PropertySetDescriptorDict.py +12 -0
- IceGrid/Query.py +451 -0
- IceGrid/Query_forward.py +10 -0
- IceGrid/RandomLoadBalancingPolicy.py +41 -0
- IceGrid/RandomLoadBalancingPolicy_forward.py +10 -0
- IceGrid/Registry.py +477 -0
- IceGrid/RegistryInfo.py +39 -0
- IceGrid/RegistryInfoSeq.py +12 -0
- IceGrid/RegistryNotExistException.py +40 -0
- IceGrid/RegistryObserver.py +282 -0
- IceGrid/RegistryObserver_forward.py +10 -0
- IceGrid/RegistryUnreachableException.py +46 -0
- IceGrid/Registry_forward.py +10 -0
- IceGrid/ReplicaGroupDescriptor.py +66 -0
- IceGrid/ReplicaGroupDescriptorSeq.py +12 -0
- IceGrid/RoundRobinLoadBalancingPolicy.py +41 -0
- IceGrid/RoundRobinLoadBalancingPolicy_forward.py +10 -0
- IceGrid/ServerDescriptor.py +107 -0
- IceGrid/ServerDescriptorSeq.py +12 -0
- IceGrid/ServerDescriptor_forward.py +10 -0
- IceGrid/ServerDynamicInfo.py +50 -0
- IceGrid/ServerDynamicInfoSeq.py +12 -0
- IceGrid/ServerInfo.py +62 -0
- IceGrid/ServerInstanceDescriptor.py +58 -0
- IceGrid/ServerInstanceDescriptorSeq.py +12 -0
- IceGrid/ServerNotExistException.py +40 -0
- IceGrid/ServerStartException.py +46 -0
- IceGrid/ServerState.py +70 -0
- IceGrid/ServerStopException.py +46 -0
- IceGrid/ServiceDescriptor.py +53 -0
- IceGrid/ServiceDescriptorSeq.py +12 -0
- IceGrid/ServiceDescriptor_forward.py +10 -0
- IceGrid/ServiceInstanceDescriptor.py +60 -0
- IceGrid/ServiceInstanceDescriptorSeq.py +12 -0
- IceGrid/Session.py +498 -0
- IceGrid/Session_forward.py +10 -0
- IceGrid/StringObjectProxyDict.py +12 -0
- IceGrid/StringStringDict.py +10 -0
- IceGrid/TemplateDescriptor.py +55 -0
- IceGrid/TemplateDescriptorDict.py +12 -0
- IceGrid/UserAccountMapper.py +178 -0
- IceGrid/UserAccountMapper_forward.py +10 -0
- IceGrid/UserAccountNotFoundException.py +34 -0
- IceGrid/__init__.py +375 -17
- IceGrid/py.typed +0 -0
- IceMX/ChildInvocationMetrics.py +56 -0
- IceMX/ChildInvocationMetrics_forward.py +10 -0
- IceMX/CollocatedMetrics.py +42 -0
- IceMX/CollocatedMetrics_forward.py +10 -0
- IceMX/ConnectionMetrics.py +53 -0
- IceMX/ConnectionMetrics_forward.py +10 -0
- IceMX/DispatchMetrics.py +57 -0
- IceMX/DispatchMetrics_forward.py +10 -0
- IceMX/InvocationMetrics.py +66 -0
- IceMX/InvocationMetrics_forward.py +10 -0
- IceMX/Metrics.py +66 -0
- IceMX/MetricsAdmin.py +586 -0
- IceMX/MetricsAdmin_forward.py +10 -0
- IceMX/MetricsFailures.py +42 -0
- IceMX/MetricsFailuresSeq.py +12 -0
- IceMX/MetricsMap.py +12 -0
- IceMX/MetricsView.py +12 -0
- IceMX/Metrics_forward.py +10 -0
- IceMX/RemoteMetrics.py +42 -0
- IceMX/RemoteMetrics_forward.py +10 -0
- IceMX/SessionMetrics.py +73 -0
- IceMX/SessionMetrics_forward.py +10 -0
- IceMX/StringIntDict.py +10 -0
- IceMX/SubscriberMetrics.py +57 -0
- IceMX/SubscriberMetrics_forward.py +10 -0
- IceMX/ThreadMetrics.py +59 -0
- IceMX/ThreadMetrics_forward.py +10 -0
- IceMX/TopicMetrics.py +53 -0
- IceMX/TopicMetrics_forward.py +10 -0
- IceMX/UnknownMetricsView.py +34 -0
- IceMX/__init__.py +75 -12
- IceMX/py.typed +0 -0
- IcePy-stubs/__init__.pyi +739 -0
- IcePy.cp312-win_amd64.pdb +0 -0
- IcePy.cp312-win_amd64.pyd +0 -0
- IceStorm/AlreadySubscribed.py +34 -0
- IceStorm/BadQoS.py +40 -0
- IceStorm/Finder.py +163 -0
- IceStorm/Finder_forward.py +10 -0
- IceStorm/LinkExists.py +40 -0
- IceStorm/LinkInfo.py +50 -0
- IceStorm/LinkInfoSeq.py +12 -0
- IceStorm/NoSuchLink.py +40 -0
- IceStorm/NoSuchTopic.py +40 -0
- IceStorm/QoS.py +10 -0
- IceStorm/Topic.py +825 -0
- IceStorm/TopicDict.py +12 -0
- IceStorm/TopicExists.py +40 -0
- IceStorm/TopicManager.py +394 -0
- IceStorm/TopicManager_forward.py +10 -0
- IceStorm/Topic_forward.py +10 -0
- IceStorm/__init__.py +61 -10
- IceStorm/py.typed +0 -0
- slice/DataStorm/SampleEvent.ice +29 -0
- slice/Glacier2/Metrics.ice +47 -88
- slice/Glacier2/PermissionsVerifier.ice +55 -111
- slice/Glacier2/Router.ice +93 -186
- slice/Glacier2/SSLInfo.ice +42 -59
- slice/Glacier2/Session.ice +133 -274
- slice/Ice/BuiltinSequences.ice +54 -59
- slice/Ice/Context.ice +24 -0
- slice/Ice/EndpointTypes.ice +50 -48
- slice/Ice/Identity.ice +36 -75
- slice/Ice/Locator.ice +74 -239
- slice/Ice/LocatorRegistry.ice +77 -0
- slice/Ice/Metrics.ice +201 -436
- slice/Ice/OperationMode.ice +38 -0
- slice/Ice/Process.ice +28 -64
- slice/Ice/PropertiesAdmin.ice +37 -87
- slice/Ice/PropertyDict.ice +23 -0
- slice/Ice/RemoteLogger.ice +126 -226
- slice/Ice/ReplyStatus.ice +65 -0
- slice/Ice/Router.ice +54 -103
- slice/Ice/SliceChecksumDict.ice +18 -36
- slice/Ice/Version.ice +43 -51
- slice/IceBox/ServiceManager.ice +79 -0
- slice/IceGrid/Admin.ice +981 -1957
- slice/IceGrid/Descriptor.ice +519 -1094
- slice/IceGrid/Exception.ice +98 -396
- slice/IceGrid/FileParser.ice +36 -72
- slice/IceGrid/Registry.ice +130 -269
- slice/IceGrid/Session.ice +64 -128
- slice/IceGrid/UserAccountMapper.ice +34 -69
- slice/IceStorm/IceStorm.ice +186 -414
- slice/IceStorm/Metrics.ice +41 -83
- slice2py.py +20 -21
- zeroc_ice-3.8.0.post1.dist-info/METADATA +106 -0
- zeroc_ice-3.8.0.post1.dist-info/RECORD +344 -0
- {zeroc_ice-3.7.10.1.dist-info → zeroc_ice-3.8.0.post1.dist-info}/WHEEL +1 -1
- {zeroc_ice-3.7.10.1.dist-info → zeroc_ice-3.8.0.post1.dist-info}/top_level.txt +1 -1
- Glacier2/Metrics_ice.py +0 -82
- Glacier2/PermissionsVerifierF_ice.py +0 -32
- Glacier2/PermissionsVerifier_ice.py +0 -284
- Glacier2/RouterF_ice.py +0 -28
- Glacier2/Router_ice.py +0 -618
- Glacier2/SSLInfo_ice.py +0 -179
- Glacier2/Session_ice.py +0 -1103
- Ice/BuiltinSequences_ice.py +0 -65
- Ice/CommunicatorF_ice.py +0 -27
- Ice/Communicator_ice.py +0 -469
- Ice/ConnectionF_ice.py +0 -33
- Ice/Connection_ice.py +0 -680
- Ice/Current_ice.py +0 -175
- Ice/EndpointF_ice.py +0 -45
- Ice/EndpointTypes_ice.py +0 -54
- Ice/Endpoint_ice.py +0 -304
- Ice/FacetMap_ice.py +0 -27
- Ice/Identity_ice.py +0 -133
- Ice/ImplicitContextF_ice.py +0 -27
- Ice/ImplicitContext_ice.py +0 -119
- Ice/InstrumentationF_ice.py +0 -38
- Ice/Instrumentation_ice.py +0 -566
- Ice/LocalException_ice.py +0 -1715
- Ice/LocatorF_ice.py +0 -32
- Ice/Locator_ice.py +0 -728
- Ice/LoggerF_ice.py +0 -27
- Ice/Logger_ice.py +0 -96
- Ice/Metrics_ice.py +0 -864
- Ice/ObjectAdapterF_ice.py +0 -27
- Ice/ObjectAdapter_ice.py +0 -461
- Ice/ObjectFactory_ice.py +0 -68
- Ice/PluginF_ice.py +0 -30
- Ice/Plugin_ice.py +0 -136
- Ice/ProcessF_ice.py +0 -28
- Ice/Process_ice.py +0 -175
- Ice/PropertiesAdmin_ice.py +0 -247
- Ice/PropertiesF_ice.py +0 -31
- Ice/Properties_ice.py +0 -199
- Ice/Py3/IceFuture.py +0 -52
- Ice/Py3/__init__.py +0 -3
- Ice/RemoteLogger_ice.py +0 -617
- Ice/RouterF_ice.py +0 -28
- Ice/Router_ice.py +0 -350
- Ice/ServantLocatorF_ice.py +0 -27
- Ice/ServantLocator_ice.py +0 -110
- Ice/SliceChecksumDict_ice.py +0 -29
- Ice/ValueFactory_ice.py +0 -125
- Ice/Version_ice.py +0 -217
- IceBox/IceBox_ice.py +0 -644
- IceGrid/Admin_ice.py +0 -6662
- IceGrid/Descriptor_ice.py +0 -1795
- IceGrid/Exception_ice.py +0 -592
- IceGrid/FileParser_ice.py +0 -171
- IceGrid/PluginFacade_ice.py +0 -288
- IceGrid/Registry_ice.py +0 -985
- IceGrid/Session_ice.py +0 -406
- IceGrid/UserAccountMapper_ice.py +0 -166
- IcePatch2/FileInfo_ice.py +0 -287
- IcePatch2/FileServer_ice.py +0 -555
- IcePatch2/__init__.py +0 -11
- IceStorm/IceStorm_ice.py +0 -1265
- IceStorm/Metrics_ice.py +0 -106
- slice/Glacier2/PermissionsVerifierF.ice +0 -30
- slice/Glacier2/RouterF.ice +0 -29
- slice/Ice/Communicator.ice +0 -676
- slice/Ice/CommunicatorF.ice +0 -31
- slice/Ice/Connection.ice +0 -516
- slice/Ice/ConnectionF.ice +0 -33
- slice/Ice/Current.ice +0 -170
- slice/Ice/Endpoint.ice +0 -291
- slice/Ice/EndpointF.ice +0 -43
- slice/Ice/FacetMap.ice +0 -36
- slice/Ice/ImplicitContext.ice +0 -119
- slice/Ice/ImplicitContextF.ice +0 -30
- slice/Ice/Instrumentation.ice +0 -509
- slice/Ice/InstrumentationF.ice +0 -38
- slice/Ice/LocalException.ice +0 -1040
- slice/Ice/LocatorF.ice +0 -32
- slice/Ice/Logger.ice +0 -99
- slice/Ice/LoggerF.ice +0 -31
- slice/Ice/ObjectAdapter.ice +0 -710
- slice/Ice/ObjectAdapterF.ice +0 -31
- slice/Ice/ObjectFactory.ice +0 -71
- slice/Ice/Plugin.ice +0 -131
- slice/Ice/PluginF.ice +0 -36
- slice/Ice/ProcessF.ice +0 -31
- slice/Ice/Properties.ice +0 -244
- slice/Ice/PropertiesF.ice +0 -32
- slice/Ice/RouterF.ice +0 -31
- slice/Ice/ServantLocator.ice +0 -136
- slice/Ice/ServantLocatorF.ice +0 -31
- slice/Ice/ValueFactory.ice +0 -133
- slice/IceBT/ConnectionInfo.ice +0 -59
- slice/IceBT/EndpointInfo.ice +0 -57
- slice/IceBT/Types.ice +0 -45
- slice/IceBox/IceBox.ice +0 -216
- slice/IceDiscovery/IceDiscovery.ice +0 -98
- slice/IceGrid/PluginFacade.ice +0 -329
- slice/IceIAP/ConnectionInfo.ice +0 -74
- slice/IceIAP/EndpointInfo.ice +0 -68
- slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +0 -83
- slice/IcePatch2/FileInfo.ice +0 -85
- slice/IcePatch2/FileServer.ice +0 -191
- slice/IceSSL/ConnectionInfo.ice +0 -54
- slice/IceSSL/ConnectionInfoF.ice +0 -31
- slice/IceSSL/EndpointInfo.ice +0 -45
- zeroc_ice-3.7.10.1.dist-info/LICENSE +0 -340
- zeroc_ice-3.7.10.1.dist-info/METADATA +0 -97
- zeroc_ice-3.7.10.1.dist-info/RECORD +0 -145
- {zeroc_ice-3.7.10.1.dist-info → zeroc_ice-3.8.0.post1.dist-info}/entry_points.txt +0 -0
Ice/Future.py
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
# Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import logging
|
|
5
|
+
import threading
|
|
6
|
+
import time
|
|
7
|
+
from collections.abc import Awaitable, Callable, Generator
|
|
8
|
+
from typing import Any, Protocol, Self, TypeVar, overload
|
|
9
|
+
|
|
10
|
+
from .LocalExceptions import InvocationCanceledException, TimeoutException
|
|
11
|
+
|
|
12
|
+
# Type variable for the result type of the Future
|
|
13
|
+
_T = TypeVar("_T")
|
|
14
|
+
_T_co = TypeVar("_T_co", covariant=True)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Future(Awaitable[_T]):
|
|
18
|
+
"""
|
|
19
|
+
A Future object representing the result of an asynchronous operation.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def __init__(self):
|
|
23
|
+
self._result: _T | None = None
|
|
24
|
+
self._exception: BaseException | None = None
|
|
25
|
+
self._condition = threading.Condition()
|
|
26
|
+
self._doneCallbacks = []
|
|
27
|
+
self._state = Future.StateRunning
|
|
28
|
+
|
|
29
|
+
def __await__(self) -> Generator[Any, None, _T]:
|
|
30
|
+
if not self.done():
|
|
31
|
+
yield self
|
|
32
|
+
return self.result()
|
|
33
|
+
|
|
34
|
+
def cancel(self) -> bool:
|
|
35
|
+
"""
|
|
36
|
+
Attempts to cancel this future.
|
|
37
|
+
|
|
38
|
+
If this future is already running or has completed, it cannot be cancelled.
|
|
39
|
+
|
|
40
|
+
Returns
|
|
41
|
+
-------
|
|
42
|
+
bool
|
|
43
|
+
``True`` if this future was cancelled, ``False`` otherwise.
|
|
44
|
+
"""
|
|
45
|
+
callbacks = []
|
|
46
|
+
with self._condition:
|
|
47
|
+
if self._state == Future.StateDone:
|
|
48
|
+
return False
|
|
49
|
+
|
|
50
|
+
if self._state == Future.StateCancelled:
|
|
51
|
+
return True
|
|
52
|
+
|
|
53
|
+
self._state = Future.StateCancelled
|
|
54
|
+
callbacks = self._doneCallbacks
|
|
55
|
+
self._doneCallbacks = []
|
|
56
|
+
self._condition.notify_all()
|
|
57
|
+
|
|
58
|
+
self._callCallbacks(callbacks)
|
|
59
|
+
|
|
60
|
+
return True
|
|
61
|
+
|
|
62
|
+
def cancelled(self) -> bool:
|
|
63
|
+
"""
|
|
64
|
+
Checks if this future has been cancelled.
|
|
65
|
+
|
|
66
|
+
Returns
|
|
67
|
+
-------
|
|
68
|
+
bool
|
|
69
|
+
``True`` if this future was cancelled, otherwise ``False``.
|
|
70
|
+
"""
|
|
71
|
+
with self._condition:
|
|
72
|
+
return self._state == Future.StateCancelled
|
|
73
|
+
|
|
74
|
+
def running(self) -> bool:
|
|
75
|
+
"""
|
|
76
|
+
Checks if this future is still running.
|
|
77
|
+
|
|
78
|
+
Returns
|
|
79
|
+
-------
|
|
80
|
+
bool
|
|
81
|
+
``True`` if this future is currently executing, otherwise ``False``.
|
|
82
|
+
"""
|
|
83
|
+
with self._condition:
|
|
84
|
+
return self._state == Future.StateRunning
|
|
85
|
+
|
|
86
|
+
def done(self) -> bool:
|
|
87
|
+
"""
|
|
88
|
+
Checks if this future has completed or been cancelled.
|
|
89
|
+
|
|
90
|
+
Returns
|
|
91
|
+
-------
|
|
92
|
+
bool
|
|
93
|
+
``True`` if this future has completed (either successfully or with an exception), or has been cancelled,
|
|
94
|
+
otherwise ``False``.
|
|
95
|
+
"""
|
|
96
|
+
with self._condition:
|
|
97
|
+
return self._state in [Future.StateCancelled, Future.StateDone]
|
|
98
|
+
|
|
99
|
+
def add_done_callback(self, fn: Callable[["Future"], Any]) -> None:
|
|
100
|
+
"""
|
|
101
|
+
Attaches a callback function which will be called when this future completes or is cancelled.
|
|
102
|
+
If this future is already complete, ``fn`` is called immediately from the calling thread.
|
|
103
|
+
|
|
104
|
+
Parameters
|
|
105
|
+
----------
|
|
106
|
+
fn : Callable[[Future], Any]
|
|
107
|
+
The function to execute upon completion.
|
|
108
|
+
"""
|
|
109
|
+
with self._condition:
|
|
110
|
+
if self._state == Future.StateRunning:
|
|
111
|
+
self._doneCallbacks.append(fn)
|
|
112
|
+
return
|
|
113
|
+
fn(self)
|
|
114
|
+
|
|
115
|
+
def result(self, timeout: int | float | None = None) -> _T:
|
|
116
|
+
"""
|
|
117
|
+
Retrieves the result of this future's operation.
|
|
118
|
+
|
|
119
|
+
If the operation has not completed, this function will wait up to ``timeout``-many seconds for it to finish.
|
|
120
|
+
If the operation raised an exception, this function raises the same exception.
|
|
121
|
+
|
|
122
|
+
Parameters
|
|
123
|
+
----------
|
|
124
|
+
timeout : int | float | None, optional
|
|
125
|
+
Maximum time (in seconds) to wait for the result.
|
|
126
|
+
If ``None`` (the default), this function waits indefinitely until the operation completes.
|
|
127
|
+
|
|
128
|
+
Returns
|
|
129
|
+
-------
|
|
130
|
+
object
|
|
131
|
+
The result of the operation.
|
|
132
|
+
|
|
133
|
+
Raises
|
|
134
|
+
------
|
|
135
|
+
TimeoutException
|
|
136
|
+
If the operation has not completed within the specified timeout.
|
|
137
|
+
InvocationCanceledException
|
|
138
|
+
If the operation was cancelled before completing.
|
|
139
|
+
Exception
|
|
140
|
+
If the operation raised an exception.
|
|
141
|
+
"""
|
|
142
|
+
with self._condition:
|
|
143
|
+
if not self._wait(timeout, lambda: self._state == Future.StateRunning):
|
|
144
|
+
raise TimeoutException()
|
|
145
|
+
|
|
146
|
+
if self._state == Future.StateCancelled:
|
|
147
|
+
raise InvocationCanceledException()
|
|
148
|
+
elif self._exception:
|
|
149
|
+
raise self._exception
|
|
150
|
+
else:
|
|
151
|
+
# We can't check if _result is None here, because it is valid to have a result of None.
|
|
152
|
+
# i.e. Future[None]
|
|
153
|
+
return self._result # type: ignore[return-value]
|
|
154
|
+
|
|
155
|
+
def exception(self, timeout: int | float | None = None) -> BaseException | None:
|
|
156
|
+
"""
|
|
157
|
+
Retrieves the exception raised by this future's operation.
|
|
158
|
+
|
|
159
|
+
If the operation has not completed, this function will wait up to ``timeout``-many seconds for it to finish.
|
|
160
|
+
|
|
161
|
+
Parameters
|
|
162
|
+
----------
|
|
163
|
+
timeout : int | float | None, optional
|
|
164
|
+
Maximum time (in seconds) to wait for the exception.
|
|
165
|
+
If ``None`` (the default), this function waits indefinitely until the operation completes.
|
|
166
|
+
|
|
167
|
+
Returns
|
|
168
|
+
-------
|
|
169
|
+
BaseException | None
|
|
170
|
+
The exception raised by the operation, or ``None`` if the operation completed successfully.
|
|
171
|
+
|
|
172
|
+
Raises
|
|
173
|
+
------
|
|
174
|
+
TimeoutException
|
|
175
|
+
If the operation has not completed within the specified timeout.
|
|
176
|
+
InvocationCanceledException
|
|
177
|
+
If the operation was cancelled before completing.
|
|
178
|
+
"""
|
|
179
|
+
with self._condition:
|
|
180
|
+
if not self._wait(timeout, lambda: self._state == Future.StateRunning):
|
|
181
|
+
raise TimeoutException()
|
|
182
|
+
if self._state == Future.StateCancelled:
|
|
183
|
+
raise InvocationCanceledException()
|
|
184
|
+
else:
|
|
185
|
+
return self._exception
|
|
186
|
+
|
|
187
|
+
def set_result(self, result: _T):
|
|
188
|
+
"""
|
|
189
|
+
Sets the result of this future and marks it as completed.
|
|
190
|
+
|
|
191
|
+
This function stores the provided ``result`` and transitions the future's state to "done".
|
|
192
|
+
Any registered callbacks are executed after the state update.
|
|
193
|
+
|
|
194
|
+
If the future is not in a running state, this function has no effect.
|
|
195
|
+
|
|
196
|
+
Parameters
|
|
197
|
+
----------
|
|
198
|
+
result : object
|
|
199
|
+
The result value to store in the future.
|
|
200
|
+
"""
|
|
201
|
+
callbacks = []
|
|
202
|
+
with self._condition:
|
|
203
|
+
if self._state != Future.StateRunning:
|
|
204
|
+
return
|
|
205
|
+
self._result = result
|
|
206
|
+
self._state = Future.StateDone
|
|
207
|
+
callbacks = self._doneCallbacks
|
|
208
|
+
self._doneCallbacks = []
|
|
209
|
+
self._condition.notify_all()
|
|
210
|
+
|
|
211
|
+
self._callCallbacks(callbacks)
|
|
212
|
+
|
|
213
|
+
def set_exception(self, ex: BaseException):
|
|
214
|
+
"""
|
|
215
|
+
Sets an exception for this future and marks it as completed.
|
|
216
|
+
|
|
217
|
+
This function stores the provided exception ``ex`` and transitions the future's state to "done".
|
|
218
|
+
Any registered callbacks are executed after the state update.
|
|
219
|
+
|
|
220
|
+
If the future is not in a running state, this function has no effect.
|
|
221
|
+
|
|
222
|
+
Parameters
|
|
223
|
+
----------
|
|
224
|
+
ex : BaseException
|
|
225
|
+
The exception to store in the future.
|
|
226
|
+
"""
|
|
227
|
+
callbacks = []
|
|
228
|
+
with self._condition:
|
|
229
|
+
if self._state != Future.StateRunning:
|
|
230
|
+
return
|
|
231
|
+
self._exception = ex
|
|
232
|
+
self._state = Future.StateDone
|
|
233
|
+
callbacks = self._doneCallbacks
|
|
234
|
+
self._doneCallbacks = []
|
|
235
|
+
self._condition.notify_all()
|
|
236
|
+
self._callCallbacks(callbacks)
|
|
237
|
+
|
|
238
|
+
@staticmethod
|
|
239
|
+
def completed(result: _T) -> "Future[_T]":
|
|
240
|
+
f = Future()
|
|
241
|
+
f.set_result(result)
|
|
242
|
+
return f
|
|
243
|
+
|
|
244
|
+
def _wait(self, timeout: float | None, testFn: Callable[[], bool]) -> bool:
|
|
245
|
+
# Must be called with _condition acquired
|
|
246
|
+
|
|
247
|
+
while testFn():
|
|
248
|
+
if timeout:
|
|
249
|
+
start = time.time()
|
|
250
|
+
self._condition.wait(timeout)
|
|
251
|
+
# Subtract the elapsed time so far from the timeout
|
|
252
|
+
timeout -= time.time() - start
|
|
253
|
+
if timeout <= 0:
|
|
254
|
+
return False
|
|
255
|
+
else:
|
|
256
|
+
self._condition.wait()
|
|
257
|
+
|
|
258
|
+
return True
|
|
259
|
+
|
|
260
|
+
def _callCallbacks(self, callbacks: list[Callable[[Self], None]]):
|
|
261
|
+
for callback in callbacks:
|
|
262
|
+
try:
|
|
263
|
+
callback(self)
|
|
264
|
+
except Exception:
|
|
265
|
+
logging.getLogger("Ice.Future").exception("done callback raised exception")
|
|
266
|
+
|
|
267
|
+
StateRunning = "running"
|
|
268
|
+
StateCancelled = "cancelled"
|
|
269
|
+
StateDone = "done"
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
def wrap_future(future: Future | asyncio.Future, *, loop: asyncio.AbstractEventLoop | None = None) -> asyncio.Future:
|
|
273
|
+
"""
|
|
274
|
+
Wraps an :class:`Ice.Future` object into an ``asyncio.Future``.
|
|
275
|
+
|
|
276
|
+
This function converts an :class:`Ice.Future` into an ``asyncio.Future`` to allow integration of Ice's
|
|
277
|
+
asynchronous operations with Python's asyncio framework. If the provided future is already
|
|
278
|
+
an ``asyncio.Future``, it is returned unchanged.
|
|
279
|
+
|
|
280
|
+
If the :class:`Ice.Future` is already completed, the ``asyncio.Future`` is immediately resolved. Otherwise,
|
|
281
|
+
completion callbacks are registered to ensure that the ``asyncio.Future`` reflects the state of the
|
|
282
|
+
:class:`Ice.Future`, including result propagation, exception handling, and cancellation.
|
|
283
|
+
|
|
284
|
+
Parameters
|
|
285
|
+
----------
|
|
286
|
+
future : Future | asyncio.Future
|
|
287
|
+
The future object to wrap. If an ``asyncio.Future`` is passed, it is returned as-is.
|
|
288
|
+
|
|
289
|
+
loop : asyncio.AbstractEventLoop | None, optional
|
|
290
|
+
The event loop to associate with the ``asyncio.Future``. If not provided, the current event loop is used.
|
|
291
|
+
|
|
292
|
+
Returns
|
|
293
|
+
-------
|
|
294
|
+
asyncio.Future
|
|
295
|
+
A future that mirrors the state of the provided :class:`Ice.Future`.
|
|
296
|
+
|
|
297
|
+
Raises
|
|
298
|
+
------
|
|
299
|
+
AssertionError
|
|
300
|
+
If ``future`` is not an instance of :class:`Ice.Future` or ``asyncio.Future``.
|
|
301
|
+
"""
|
|
302
|
+
|
|
303
|
+
if isinstance(future, asyncio.Future):
|
|
304
|
+
return future
|
|
305
|
+
|
|
306
|
+
assert isinstance(future, Future), "Ice.Future is expected, got {!r}".format(future)
|
|
307
|
+
|
|
308
|
+
@overload
|
|
309
|
+
def forwardCompletion(sourceFuture: Future, targetFuture: asyncio.Future): ...
|
|
310
|
+
|
|
311
|
+
@overload
|
|
312
|
+
def forwardCompletion(sourceFuture: asyncio.Future, targetFuture: Future): ...
|
|
313
|
+
|
|
314
|
+
def forwardCompletion(sourceFuture: Future | asyncio.Future, targetFuture: Future | asyncio.Future):
|
|
315
|
+
if not targetFuture.done():
|
|
316
|
+
if sourceFuture.cancelled():
|
|
317
|
+
targetFuture.cancel()
|
|
318
|
+
elif (sourceException := sourceFuture.exception()) is not None:
|
|
319
|
+
targetFuture.set_exception(sourceException)
|
|
320
|
+
else:
|
|
321
|
+
targetFuture.set_result(sourceFuture.result())
|
|
322
|
+
|
|
323
|
+
if loop is None:
|
|
324
|
+
loop = asyncio.get_event_loop()
|
|
325
|
+
asyncioFuture = loop.create_future()
|
|
326
|
+
|
|
327
|
+
if future.done():
|
|
328
|
+
# As long as no done callbacks are registered, completing the asyncio future should be thread safe
|
|
329
|
+
# even if this future is constructed with a loop which isn't the current thread's loop.
|
|
330
|
+
forwardCompletion(future, asyncioFuture)
|
|
331
|
+
else:
|
|
332
|
+
asyncioFuture.add_done_callback(lambda f: forwardCompletion(asyncioFuture, future))
|
|
333
|
+
future.add_done_callback(lambda f: loop.call_soon_threadsafe(forwardCompletion, future, asyncioFuture))
|
|
334
|
+
|
|
335
|
+
return asyncioFuture
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
class FutureLike(Protocol[_T_co]):
|
|
339
|
+
"""A protocol that defines an interface for objects that behave like a ``Future``."""
|
|
340
|
+
|
|
341
|
+
# We use a positional-only parameter (/) to match both `asyncio` and `concurrent.futures`
|
|
342
|
+
# implementations (since the two implementations use different parameter names).
|
|
343
|
+
def add_done_callback(self, callback: Callable[["FutureLike"], Any], /) -> None:
|
|
344
|
+
"""
|
|
345
|
+
Adds a callback to be run when the ``Future`` is done.
|
|
346
|
+
|
|
347
|
+
Parameters
|
|
348
|
+
----------
|
|
349
|
+
callback: Callable[[FutureLike], Any]
|
|
350
|
+
A callable that takes the ``Future`` object as its only argument.
|
|
351
|
+
Will be called when the ``Future`` completes (successfully, with exception, or cancelled).
|
|
352
|
+
"""
|
|
353
|
+
...
|
|
354
|
+
|
|
355
|
+
def result(self, timeout: int | float | None = None) -> _T_co:
|
|
356
|
+
"""
|
|
357
|
+
Retrieves the result of the ``Future``.
|
|
358
|
+
|
|
359
|
+
If the ``Future`` has not completed, this function will wait up to ``timeout``-many seconds for it to finish.
|
|
360
|
+
|
|
361
|
+
Parameters
|
|
362
|
+
----------
|
|
363
|
+
timeout : int | float | None, optional
|
|
364
|
+
Maximum time (in seconds) to wait for the result.
|
|
365
|
+
If ``None`` (the default), this function waits indefinitely until the operation completes.
|
|
366
|
+
|
|
367
|
+
Returns
|
|
368
|
+
-------
|
|
369
|
+
object
|
|
370
|
+
The result of the ``Future``.
|
|
371
|
+
"""
|
|
372
|
+
...
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
__all__ = ["Future", "wrap_future", "FutureLike"]
|
Ice/IcePyTypes.py
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
# These are the public types we re-export from IcePy.
|
|
4
|
+
|
|
5
|
+
from IcePy import (
|
|
6
|
+
BatchRequest,
|
|
7
|
+
Connection,
|
|
8
|
+
ConnectionInfo,
|
|
9
|
+
Endpoint,
|
|
10
|
+
EndpointInfo,
|
|
11
|
+
IPConnectionInfo,
|
|
12
|
+
IPEndpointInfo,
|
|
13
|
+
NativePropertiesAdmin,
|
|
14
|
+
OpaqueEndpointInfo,
|
|
15
|
+
SSLConnectionInfo,
|
|
16
|
+
SSLEndpointInfo,
|
|
17
|
+
TCPConnectionInfo,
|
|
18
|
+
TCPEndpointInfo,
|
|
19
|
+
UDPConnectionInfo,
|
|
20
|
+
UDPEndpointInfo,
|
|
21
|
+
WSConnectionInfo,
|
|
22
|
+
WSEndpointInfo,
|
|
23
|
+
intVersion,
|
|
24
|
+
loadSlice,
|
|
25
|
+
stringVersion,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
__all__ = [
|
|
29
|
+
"BatchRequest",
|
|
30
|
+
"Connection",
|
|
31
|
+
"ConnectionInfo",
|
|
32
|
+
"Endpoint",
|
|
33
|
+
"EndpointInfo",
|
|
34
|
+
"IPConnectionInfo",
|
|
35
|
+
"IPEndpointInfo",
|
|
36
|
+
"NativePropertiesAdmin",
|
|
37
|
+
"OpaqueEndpointInfo",
|
|
38
|
+
"SSLConnectionInfo",
|
|
39
|
+
"SSLEndpointInfo",
|
|
40
|
+
"TCPConnectionInfo",
|
|
41
|
+
"TCPEndpointInfo",
|
|
42
|
+
"UDPConnectionInfo",
|
|
43
|
+
"UDPEndpointInfo",
|
|
44
|
+
"WSConnectionInfo",
|
|
45
|
+
"WSEndpointInfo",
|
|
46
|
+
"intVersion",
|
|
47
|
+
"loadSlice",
|
|
48
|
+
"stringVersion",
|
|
49
|
+
]
|
Ice/Identity.py
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
# slice2py version 3.8.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import IcePy
|
|
7
|
+
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass(order=True, unsafe_hash=True)
|
|
12
|
+
class Identity:
|
|
13
|
+
"""
|
|
14
|
+
Represents the identity of an Ice object. It is comparable to the path of a URI. Its string representation is
|
|
15
|
+
``name`` when the category is empty, and ``category/name`` when the category is not empty.
|
|
16
|
+
|
|
17
|
+
Attributes
|
|
18
|
+
----------
|
|
19
|
+
name : str
|
|
20
|
+
The name of the Ice object. An empty name is not valid.
|
|
21
|
+
category : str
|
|
22
|
+
The category of the object.
|
|
23
|
+
|
|
24
|
+
Notes
|
|
25
|
+
-----
|
|
26
|
+
The Slice compiler generated this dataclass from Slice struct ``::Ice::Identity``.
|
|
27
|
+
"""
|
|
28
|
+
name: str = ""
|
|
29
|
+
category: str = ""
|
|
30
|
+
|
|
31
|
+
_Ice_Identity_t = IcePy.defineStruct(
|
|
32
|
+
"::Ice::Identity",
|
|
33
|
+
Identity,
|
|
34
|
+
(),
|
|
35
|
+
(
|
|
36
|
+
("name", (), IcePy._t_string),
|
|
37
|
+
("category", (), IcePy._t_string)
|
|
38
|
+
))
|
|
39
|
+
|
|
40
|
+
__all__ = ["Identity", "_Ice_Identity_t"]
|
Ice/IdentitySeq.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
# slice2py version 3.8.0
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import IcePy
|
|
7
|
+
|
|
8
|
+
from Ice.Identity import _Ice_Identity_t
|
|
9
|
+
|
|
10
|
+
_Ice_IdentitySeq_t = IcePy.defineSequence("::Ice::IdentitySeq", (), _Ice_Identity_t)
|
|
11
|
+
|
|
12
|
+
__all__ = ["_Ice_IdentitySeq_t"]
|
Ice/ImplicitContext.py
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
from typing import final
|
|
4
|
+
|
|
5
|
+
import IcePy
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@final
|
|
9
|
+
class ImplicitContext:
|
|
10
|
+
"""
|
|
11
|
+
Represents the request context associated with a communicator.
|
|
12
|
+
When you make a remote invocation without an explicit request context parameter, Ice uses the per-proxy request
|
|
13
|
+
context (if any) combined with the ``ImplicitContext`` associated with your communicator.
|
|
14
|
+
|
|
15
|
+
The property ``Ice.ImplicitContext`` controls if your communicator has an associated implicit context,
|
|
16
|
+
and when it does, whether this implicit context is per-thread or shared by all threads:
|
|
17
|
+
|
|
18
|
+
- None (default):
|
|
19
|
+
No implicit context at all.
|
|
20
|
+
- PerThread:
|
|
21
|
+
The implementation maintains a context per thread.
|
|
22
|
+
- Shared:
|
|
23
|
+
The implementation maintains a single context shared by all threads.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(self, impl: IcePy.ImplicitContext):
|
|
27
|
+
self._impl = impl
|
|
28
|
+
|
|
29
|
+
def getContext(self) -> dict[str, str]:
|
|
30
|
+
"""
|
|
31
|
+
Gets a copy of the request context maintained by this object.
|
|
32
|
+
|
|
33
|
+
Returns
|
|
34
|
+
-------
|
|
35
|
+
dict[str, str]
|
|
36
|
+
A copy of the request context.
|
|
37
|
+
"""
|
|
38
|
+
return self._impl.getContext()
|
|
39
|
+
|
|
40
|
+
def setContext(self, newContext: dict[str, str]):
|
|
41
|
+
"""
|
|
42
|
+
Sets the request context.
|
|
43
|
+
|
|
44
|
+
Parameters
|
|
45
|
+
----------
|
|
46
|
+
newContext : dict[str, str]
|
|
47
|
+
The new request context.
|
|
48
|
+
"""
|
|
49
|
+
self._impl.setContext(newContext)
|
|
50
|
+
|
|
51
|
+
def containsKey(self, key: str) -> bool:
|
|
52
|
+
"""
|
|
53
|
+
Checks if the specified key has an associated value in the request context.
|
|
54
|
+
|
|
55
|
+
Parameters
|
|
56
|
+
----------
|
|
57
|
+
key : str
|
|
58
|
+
The key.
|
|
59
|
+
|
|
60
|
+
Returns
|
|
61
|
+
-------
|
|
62
|
+
bool
|
|
63
|
+
``True`` if the key has an associated value, ``False`` otherwise.
|
|
64
|
+
"""
|
|
65
|
+
return self._impl.containsKey(key)
|
|
66
|
+
|
|
67
|
+
def get(self, key: str) -> str:
|
|
68
|
+
"""
|
|
69
|
+
Gets the value associated with the specified key in the request context.
|
|
70
|
+
|
|
71
|
+
Parameters
|
|
72
|
+
----------
|
|
73
|
+
key : str
|
|
74
|
+
The key.
|
|
75
|
+
|
|
76
|
+
Returns
|
|
77
|
+
-------
|
|
78
|
+
str
|
|
79
|
+
The value associated with the key, or the empty string if no value is associated with the key.
|
|
80
|
+
:func:`containsKey` allows you to distinguish between an empty-string value and no value at all.
|
|
81
|
+
"""
|
|
82
|
+
return self._impl.get(key)
|
|
83
|
+
|
|
84
|
+
def put(self, key: str, value: str) -> str | None:
|
|
85
|
+
"""
|
|
86
|
+
Creates or updates a key/value entry in the request context.
|
|
87
|
+
|
|
88
|
+
Parameters
|
|
89
|
+
----------
|
|
90
|
+
key : str
|
|
91
|
+
The key.
|
|
92
|
+
value : str
|
|
93
|
+
The value.
|
|
94
|
+
|
|
95
|
+
Returns
|
|
96
|
+
-------
|
|
97
|
+
str | None
|
|
98
|
+
The previous value associated with the key, if any.
|
|
99
|
+
"""
|
|
100
|
+
return self._impl.put(key, value)
|
|
101
|
+
|
|
102
|
+
def remove(self, key: str) -> str | None:
|
|
103
|
+
"""
|
|
104
|
+
Removes the entry for the specified key in the request context.
|
|
105
|
+
|
|
106
|
+
Parameters
|
|
107
|
+
----------
|
|
108
|
+
key : str
|
|
109
|
+
The key.
|
|
110
|
+
|
|
111
|
+
Returns
|
|
112
|
+
-------
|
|
113
|
+
str | None
|
|
114
|
+
The value associated with the key, if any.
|
|
115
|
+
"""
|
|
116
|
+
return self._impl.remove(key)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
__all__ = ["ImplicitContext"]
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from collections.abc import Callable
|
|
10
|
+
|
|
11
|
+
from .EventLoopAdapter import EventLoopAdapter
|
|
12
|
+
from .IcePyTypes import BatchRequest, Connection
|
|
13
|
+
from .Logger import Logger
|
|
14
|
+
from .Properties import Properties
|
|
15
|
+
from .UserException import UserException
|
|
16
|
+
from .Value import Value
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@dataclass
|
|
20
|
+
class InitializationData:
|
|
21
|
+
"""
|
|
22
|
+
Represents a set of options that you can specify when initializing a communicator.
|
|
23
|
+
|
|
24
|
+
Attributes
|
|
25
|
+
----------
|
|
26
|
+
properties : Ice.Properties | None
|
|
27
|
+
The properties for the communicator.
|
|
28
|
+
If not ``None``, this corresponds to the object returned by the :func:`Communicator.getProperties` function.
|
|
29
|
+
logger : Ice.Logger | None
|
|
30
|
+
The logger for the communicator.
|
|
31
|
+
threadStart : Callable[[], None] | None
|
|
32
|
+
A :class:`Callable` that is invoked whenever the communicator starts a new thread.
|
|
33
|
+
threadStop : Callable[[], None] | None
|
|
34
|
+
A :class:`Callable` that is invoked whenever a thread created by the communicator is about to be destroyed.
|
|
35
|
+
executor : Callable[[Callable[[], None], Connection], None] | None
|
|
36
|
+
A :class:`Callable` that the communicator invokes to execute dispatches and async invocation callbacks.
|
|
37
|
+
The callable receives two arguments: a callable and an Ice.Connection object.
|
|
38
|
+
The executor must eventually invoke the callable with no arguments.
|
|
39
|
+
batchRequestInterceptor : Callable[[Ice.BatchRequest, int, int], None] | None
|
|
40
|
+
A :class:`Callable` that is invoked by the Ice runtime to enqueue a batch request.
|
|
41
|
+
The callable receives three arguments: a BatchRequest object, an integer representing the number of requests
|
|
42
|
+
currently in the queue, and an integer representing the number of bytes consumed by the requests in the queue.
|
|
43
|
+
The interceptor must eventually invoke the enqueue function on the BatchRequest object.
|
|
44
|
+
eventLoopAdapter : Ice.EventLoopAdapter | None
|
|
45
|
+
An event loop adapter used to run coroutines and wrap futures. If provided, this adapter is responsible for
|
|
46
|
+
executing coroutines returned by Ice asynchronous dispatch functions and for wrapping Ice futures (from Ice
|
|
47
|
+
Async APIs) into futures that can be awaited in the application's event loop.
|
|
48
|
+
sliceLoader : Callable[[str], Ice.Value | Ice.UserException | None] | None
|
|
49
|
+
A :class:`Callable` used to create instances of Slice classes and user exceptions.
|
|
50
|
+
Applications can supply a custom slice loader that the Ice runtime will use during unmarshaling.
|
|
51
|
+
The callable receives one argument: a type ID or compact type ID (as a string) and returns a new instance of the
|
|
52
|
+
corresponding class or exception, or ``None`` if no such class or exception could be found.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
properties: Properties | None = None
|
|
56
|
+
logger: Logger | None = None
|
|
57
|
+
threadStart: Callable[[], None] | None = None
|
|
58
|
+
threadStop: Callable[[], None] | None = None
|
|
59
|
+
executor: Callable[[Callable[[], None], Connection], None] | None = None
|
|
60
|
+
batchRequestInterceptor: Callable[[BatchRequest, int, int], None] | None = None
|
|
61
|
+
eventLoopAdapter: EventLoopAdapter | None = None
|
|
62
|
+
sliceLoader: Callable[[str], Value | UserException | None] | None = None
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
__all__ = ["InitializationData"]
|