예제 #1
0
        private void CreateNativeClient(
            FabricTransportSettings transportSettings,
            string connectionAddress,
            IFabricTransportClientEventHandler eventHandler,
            IFabricTransportCallbackMessageHandler contract,
            NativeFabricTransport.IFabricTransportMessageDisposer messageMessageDisposer)
        {
            var iid = typeof(NativeFabricTransport.IFabricTransportClient).GetTypeInfo().GUID;

            using (var pin = new PinCollection())
            {
                var nativeTransportSettings = transportSettings.ToNativeV2(pin);
                var messageHandler          = new FabricTransportCallbackHandlerBroker(contract);
                var nativeConnectionAddress = pin.AddBlittable(connectionAddress);
                var nativeEventHandler      = new FabricTransportClientConnectionEventHandlerBroker(eventHandler);
                this.nativeClient =
                    NativeFabricTransport.CreateFabricTransportClient(
                        ref iid,
                        nativeTransportSettings,
                        nativeConnectionAddress,
                        messageHandler,
                        nativeEventHandler,
                        messageMessageDisposer);
            }
        }
        private void CreateNativeListener(
            IFabricTransportMessageHandler contract,
            FabricTransportSettings transportSettings,
            FabricTransportListenerAddress listenerAddress,
            IFabricTransportConnectionHandler connectionHandler)
        {
            var iid = typeof(NativeFabricTransport.IFabricTransportListener).GetTypeInfo().GUID;

            using (var pin = new PinCollection())
            {
                var nativeTransportSettings = transportSettings.ToNativeV2(pin);
                var nativeListenerAddress   = listenerAddress.ToNative(pin);
                var nativeConnectionHandler = new FabricTransportConnectionHandlerBroker(connectionHandler);
                var messageHandler          = new FabricTransportMessageHandlerBroker(contract, connectionHandler);
                var nativeFabricTransportMessageDisposer = new NativeFabricTransportMessageDisposer();
                this.nativeListner = NativeFabricTransport.CreateFabricTransportListener(
                    ref iid,
                    nativeTransportSettings,
                    nativeListenerAddress,
                    messageHandler,
                    nativeConnectionHandler,
                    nativeFabricTransportMessageDisposer);
            }
        }