示例#1
0
        private void SessionManagerConstructorHelper(
            Guid partitionId,
            long replicaId,
            Uri ownerServiceInstanceName,
            NativeTypes.FABRIC_PARTITION_KEY_TYPE keyType,
            object partitionKey)
        {
            // AppTrace.TraceSource.WriteNoise("ReliableMessaging.NativeReliableMessaging.FabricCreateReliableSession");

            // Marshal the serviceInstance URI
            // TODO: Call FreeHGlobal when done with this native string

            partitionKey = PartitionKeyHelpers.NormalizeManagerPartitionKey(partitionKey);

            using (var pin = new PinCollection())
            {
                this.nativeSessionManager = NativeReliableMessaging.CreateReliableSessionManager(
                    pin.AddBlittable(HostServicePartitionInfoFactory.ToNativeValue(partitionId, replicaId)),
                    pin.AddObject(ownerServiceInstanceName),
                    keyType,
                    pin.AddBlittable(partitionKey)
                    );
            }

            Debug.Assert(null != this.nativeSessionManager);
        }
示例#2
0
 private Task <IReliableMessagingSession> CreateOutboundSessionAsyncHelper(
     Uri targetServiceInstanceName,
     NativeTypes.FABRIC_PARTITION_KEY_TYPE keyType,
     object partitionKey,
     string targetEndpoint,
     CancellationToken cancellationToken)
 {
     return(Utility.WrapNativeAsyncInvokeInMTA <IReliableMessagingSession>(
                (callback) => this.CreateOutboundSessionAsyncBeginWrapper(targetServiceInstanceName, keyType, partitionKey, targetEndpoint, callback),
                this.CreateOutboundSessionAsyncEndWrapper,
                cancellationToken,
                "ReliableSessionManager.CreateOutboundSession"));
 }
示例#3
0
        private NativeCommon.IFabricAsyncOperationContext CreateOutboundSessionAsyncBeginWrapper(
            Uri ownerServiceInstanceName,
            NativeTypes.FABRIC_PARTITION_KEY_TYPE keyType,
            object partitionKey,
            string targetEndpoint,
            NativeCommon.IFabricAsyncOperationCallback callback)
        {
            // AppTrace.TraceSource.WriteNoise("ReliableMessaging.NativeReliableMessaging.FabricCreateReliableSession");

            partitionKey = PartitionKeyHelpers.NormalizeManagerPartitionKey(partitionKey);

            using (var pin = new PinCollection())
            {
                return(this.nativeSessionManager.BeginCreateOutboundSession(
                           pin.AddObject(ownerServiceInstanceName),
                           keyType,
                           pin.AddBlittable(partitionKey),
                           pin.AddBlittable(targetEndpoint),
                           callback));
            }
        }
示例#4
0
 public static extern IFabricReliableSessionManager CreateReliableSessionManager(
     [In] IntPtr hostServicePartitionInfo,
     [In] IntPtr name,
     [In] NativeTypes.FABRIC_PARTITION_KEY_TYPE partitionKeyType,
     [In] IntPtr partitionKey);