public static FabricTransportMessage ToFabricTransportMessage(
            NativeFabricTransport.IFabricTransportMessage message)
        {
            FabricTransportMessage msg;
            uint   count;
            IntPtr headerBuffer;
            IntPtr messageBuffer;

            message.GetHeaderAndBodyBuffer(out headerBuffer,
                                           out count,
                                           out messageBuffer);
            if (headerBuffer != IntPtr.Zero)
            {
                msg =
                    new FabricTransportMessage(
                        NativeMessageToFabricTransportHeader(headerBuffer),
                        NativeMessageToFabricTransportBody(count, messageBuffer),
                        message);
            }
            else
            {
                msg = new FabricTransportMessage(null,
                                                 NativeMessageToFabricTransportBody(count, messageBuffer),
                                                 message);
            }

            GC.KeepAlive(message);
            return(msg);
        }
        public void HandleOneWay(IntPtr nativeClientId,
                                 NativeFabricTransport.IFabricTransportMessage message)
        {
            var clientId = NativeTypes.FromNativeString(nativeClientId);
            var context  = new FabricTransportRequestContext(clientId, this.nativeConnectionHandler.GetCallBack);

            this.service.HandleOneWay(context, NativeFabricTransportMessage.ToFabricTransportMessage(message));
        }
        public NativeCommon.IFabricAsyncOperationContext BeginProcessRequest(
            IntPtr nativeClientId,
            NativeFabricTransport.IFabricTransportMessage message,
            uint timeoutMilliseconds,
            NativeCommon.IFabricAsyncOperationCallback callback)
        {
            var managedTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
            var clientId       = NativeTypes.FromNativeString(nativeClientId);

            return(Utility.WrapNativeAsyncMethodImplementation(
                       (cancellationToken) =>
                       this.RequestResponseAsync(clientId, NativeFabricTransportMessage.ToFabricTransportMessage(message), managedTimeout),
                       callback,
                       "IFabricServiceCommunicationContract.RequestResponseAsync"));
        }
예제 #4
0
 public void HandleOneWay(NativeFabricTransport.IFabricTransportMessage message)
 {
     this.callImpl.OneWayMessage(NativeFabricTransportMessage.ToFabricTransportMessage(message));
 }