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); }
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")); }
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)); } }
public static extern IFabricReliableSessionManager CreateReliableSessionManager( [In] IntPtr hostServicePartitionInfo, [In] IntPtr name, [In] NativeTypes.FABRIC_PARTITION_KEY_TYPE partitionKeyType, [In] IntPtr partitionKey);