示例#1
0
        public IWampClientProxy <TMessage> Create(IWampConnection <TMessage> connection)
        {
            IWampOutgoingMessageHandler outgoingHandler =
                mOutgoingHandlerBuilder.Build(connection);

            WampConnectionMonitor <TMessage> monitor =
                new WampConnectionMonitor <TMessage>(connection);

            IDisposable disposable =
                new WampClientContainerDisposable <TMessage, IWampClientProxy <TMessage> >
                    (mContainer, connection);

            WampClientProxy <TMessage> result =
                new WampClientProxy <TMessage>(outgoingHandler,
                                               mOutgoingSerializer,
                                               monitor,
                                               disposable);

            result.Session = (long)mContainer.GenerateClientId(result);
            result.Binding = mBinding;

            IDetailedWampConnection <TMessage> detailedConnection =
                connection as IDetailedWampConnection <TMessage>;

            if (detailedConnection != null)
            {
                result.TransportDetails =
                    detailedConnection.TransportDetails;
            }

            monitor.Client = result;

            return(result);
        }
        public TServer Create(TRawClient client, IWampConnection <TMessage> connection)
        {
            IWampOutgoingMessageHandler handler =
                mOutgoingHandlerBuilder.Build(client, connection);

            WampOutgoingInterceptor <TMessage> interceptor =
                new WampOutgoingInterceptor <TMessage>(mOutgoingSerializer,
                                                       handler);

            ProxyGenerationOptions proxyOptions =
                new ProxyGenerationOptions()
            {
                Selector = new WampInterceptorSelector <TMessage>()
            };

            proxyOptions.AddMixinInstance(new DisposableForwarder(connection));

            TServer result =
                (TServer)mProxyGenerator.CreateInterfaceProxyWithoutTarget
                    (typeof(TServer),
                    new Type[] { typeof(IDisposable) },
                    proxyOptions, interceptor);

            return(result);
        }
示例#3
0
 public WampServerProxy(IWampOutgoingMessageHandler messageHandler,
                        IWampOutgoingRequestSerializer requestSerializer,
                        IDisposable disposable) :
     base(messageHandler, requestSerializer)
 {
     mDisposable = disposable;
 }
        public IWampServerProxy Create(IWampClient <TMessage> client, IWampConnection <TMessage> connection)
        {
            IWampOutgoingMessageHandler outgoingMessageHandler = mOutgoingHandlerBuilder.Build(client, connection);

            WampServerProxy result =
                new WampServerProxy(outgoingMessageHandler, mSerializer, connection);

            return(result);
        }
 public WampClientProxy(IWampOutgoingMessageHandler messageHandler,
                        IWampOutgoingRequestSerializer requestSerializer,
                        IWampConnectionMonitor monitor,
                        IDisposable disposable) :
     base(messageHandler, requestSerializer)
 {
     mMonitor    = monitor;
     mDisposable = disposable;
 }
示例#6
0
        public IWampServer Create(TRawClient client, IWampConnection <TMessage> connection)
        {
            IWampOutgoingMessageHandler handler =
                mOutgoingHandlerBuilder.Build(client, connection);

            IDisposable disposable = new DisposableForwarder(connection);

            WampServerProxy result = new WampServerProxy(handler, mOutgoingSerializer, disposable);

            return(result);
        }
        public TServer Create(TRawClient client, IWampConnection <TMessage> connection)
        {
            IWampOutgoingMessageHandler handler =
                mOutgoingHandlerBuilder.Build(client, connection);

            WampOutgoingInterceptor <TMessage> interceptor =
                new WampOutgoingInterceptor <TMessage>(mOutgoingSerializer,
                                                       handler);

            var proxyOptions = new ProxyGenerationOptions();

            TServer result =
                mProxyGenerator.CreateInterfaceProxyWithoutTarget <TServer>
                    (proxyOptions,
                    interceptor);

            return(result);
        }
示例#8
0
        public IWampClient Create(IWampConnection <TMessage> connection)
        {
            IWampOutgoingMessageHandler outgoingHandler =
                mOutgoingHandlerBuilder.Build(connection);

            WampConnectionMonitor <TMessage> monitor =
                new WampConnectionMonitor <TMessage>(connection);

            IDisposable disposable =
                new WampClientContainerDisposable <TMessage, IWampClient>
                    (mContainer, connection);

            WampClientProxy result =
                new WampClientProxy(outgoingHandler,
                                    mOutgoingSerializer,
                                    monitor,
                                    disposable);

            result.SessionId = (string)mContainer.GenerateClientId(result);

            monitor.Client = result;

            return(result);
        }
 public WampClientProxyBase(IWampOutgoingMessageHandler messageHandler, IWampOutgoingRequestSerializer requestSerializer)
     : base(messageHandler, requestSerializer)
 {
 }
示例#10
0
        public IWampClientProxy <TMessage> Create(IWampConnection <TMessage> connection)
        {
            IWampOutgoingMessageHandler outgoingHandler =
                mOutgoingHandlerBuilder.Build(connection);

            WampOutgoingInterceptor <TMessage> wampOutgoingInterceptor =
                new WampOutgoingInterceptor <TMessage>
                    (mOutgoingSerializer,
                    outgoingHandler);

            WampRawOutgoingInterceptor <TMessage> wampRawOutgoingInterceptor =
                new WampRawOutgoingInterceptor <TMessage>(outgoingHandler);

            ProxyGenerationOptions proxyGenerationOptions =
                new ProxyGenerationOptions()
            {
                Selector =
                    new WampInterceptorSelector <TMessage>()
            };

            WampConnectionMonitor <TMessage> monitor =
                new WampConnectionMonitor <TMessage>(connection);

            proxyGenerationOptions.AddMixinInstance(monitor);

            proxyGenerationOptions.AddMixinInstance
                (new WampClientContainerDisposable <TMessage, IWampClientProxy <TMessage> >
                    (mContainer, connection));

            WampTransportDetails transportDetails = null;


            if (connection is IDetailedWampConnection <TMessage> detailedConnection)
            {
                transportDetails = detailedConnection.TransportDetails;
            }

            WampClientPropertyBag <TMessage> propertyBag =
                new WampClientPropertyBag <TMessage>(mBinding, transportDetails);

            proxyGenerationOptions.AddMixinInstance(propertyBag);


            if (connection is IWampAuthenticatedConnection <TMessage> authenticatedConnection)
            {
                propertyBag.Authenticator = authenticatedConnection.Authenticator;
            }

            IWampClientProxy <TMessage> result =
                mGenerator.CreateInterfaceProxyWithoutTarget
                    (typeof(IWampProxy), new[] { typeof(IWampClientProxy <TMessage>) },
                    proxyGenerationOptions,
                    wampRawOutgoingInterceptor,
                    wampOutgoingInterceptor)
                as IWampClientProxy <TMessage>;

            monitor.Client = result;

            long session = (long)mContainer.GenerateClientId(result);

            propertyBag.Session = session;

            return(result);
        }
示例#11
0
 public WampServerProxy(IWampOutgoingMessageHandler messageHandler, IWampOutgoingRequestSerializer requestSerializer)
     : base(messageHandler, requestSerializer)
 {
 }
 /// <summary>
 /// Initializes a new instance of <see cref="WampOutgoingInterceptor{TMessage}"/>.
 /// </summary>
 /// <param name="outgoingSerializer">The <see cref="IWampOutgoingRequestSerializer"/> to
 /// serialize method calls with.</param>
 /// <param name="outgoingHandler">The <see cref="IWampOutgoingMessageHandler"/>
 /// that will deal with the serialized method calls.</param>
 public WampOutgoingInterceptor(IWampOutgoingRequestSerializer outgoingSerializer,
                                IWampOutgoingMessageHandler outgoingHandler)
 {
     mOutgoingSerializer = outgoingSerializer;
     mOutgoingHandler    = outgoingHandler;
 }
示例#13
0
 protected ProxyBase(IWampOutgoingMessageHandler messageHandler, IWampOutgoingRequestSerializer requestSerializer)
 {
     mMessageHandler    = messageHandler;
     mRequestSerializer = requestSerializer;
 }
 /// <summary>
 /// Initializes a new instance of <see cref="WampRawOutgoingInterceptor{TMessage}"/>.
 /// </summary>
 /// <param name="outgoingHandler">The <see cref="IWampOutgoingMessageHandler"/>
 /// used to write messages to the wire.</param>
 public WampRawOutgoingInterceptor(IWampOutgoingMessageHandler outgoingHandler)
 {
     mOutgoingHandler = outgoingHandler;
 }