Exemple #1
0
            public InMemoryConnection(IWampBinding <TMessage> binding, IObservable <WampMessage <TMessage> > incoming, IObserver <WampMessage <TMessage> > outgoing, IScheduler scheduler, ISubject <Unit> connectionOpen, ISubject <Unit> connectionClosed)
            {
                mIncoming         = incoming;
                mOutgoing         = outgoing;
                mConnectionOpen   = connectionOpen;
                mScheduler        = scheduler;
                mConnectionClosed = connectionClosed;
                mBinding          = binding;

                IDisposable connectionClosedSubscription =
                    mConnectionClosed.Subscribe(x => RaiseConnectionClosed());

                IDisposable connectionOpenSubscription =
                    mConnectionOpen.Subscribe(x => RaiseConnectionOpen());

                IDisposable inputSubscription = mIncoming
                                                .ObserveOn(mScheduler)
                                                .Subscribe(x => OnNewMessage(x),
                                                           ex => OnError(ex),
                                                           () => OnCompleted());

                mSubscription =
                    new CompositeDisposable(connectionClosedSubscription,
                                            connectionOpenSubscription,
                                            inputSubscription);
            }
 /// <summary>
 /// Creates a new instance of <see cref="WampClientBuilderFactory{TMessage}"/>.
 /// </summary>
 /// <param name="outgoingSerializer">The <see cref="IWampOutgoingRequestSerializer"/>
 /// used to serialize methods call to <see cref="WampMessage{TMessage}"/>s.</param>
 /// <param name="outgoingHandlerBuilder">The <see cref="IWampOutgoingMessageHandler"/>
 /// used to create the <see cref="IWampOutgoingMessageHandler"/> used to
 /// handle outgoing <see cref="WampMessage{TMessage}"/>s.</param>
 public WampClientBuilderFactory(IWampOutgoingRequestSerializer outgoingSerializer,
                                 IWampOutgoingMessageHandlerBuilder <TMessage> outgoingHandlerBuilder, IWampBinding <TMessage> binding)
 {
     mOutgoingSerializer     = outgoingSerializer;
     mOutgoingHandlerBuilder = outgoingHandlerBuilder;
     mBinding = binding;
 }
Exemple #3
0
 /// <summary>
 /// Creates a new instance of <see cref="WampClientBuilder{TMessage}"/>.
 /// </summary>
 /// <param name="outgoingSerializer">A <see cref="IWampOutgoingRequestSerializer"/>
 /// used to serialize message calls into <see cref="WampMessage{TMessage}"/>s</param>
 /// <param name="outgoingHandlerBuilder">An <see cref="IWampOutgoingMessageHandlerBuilder{TMessage}"/> used to build
 /// a <see cref="IWampOutgoingMessageHandler"/> per connection.</param>
 /// <param name="container">A <see cref="IWampClientContainer{TMessage,TClient}"/> that contains all clients.</param>
 public WampClientBuilder(IWampOutgoingRequestSerializer outgoingSerializer, IWampOutgoingMessageHandlerBuilder <TMessage> outgoingHandlerBuilder, IWampClientContainer <TMessage, IWampClientProxy <TMessage> > container, IWampBinding <TMessage> binding)
 {
     mOutgoingSerializer     = outgoingSerializer;
     mOutgoingHandlerBuilder = outgoingHandlerBuilder;
     mContainer = container;
     mBinding   = binding;
 }
        public IControlledWampConnection <TMessage> Activate <TMessage>(IWampBinding <TMessage> binding)
        {
            IControlledWampConnection <TMessage> connection = mConnectionActivator.Activate(binding);
            ScheduledWampConnection <TMessage>   result     = new ScheduledWampConnection <TMessage>(connection, mScheduler);

            return(result);
        }
Exemple #5
0
 public RecordAndPlayInterceptor(IWampOutgoingRequestSerializer outgoingSerializer, IMessagePlayer <TMessage> player, IMessageRecorder <TMessage> recorder, IWampBinding <TMessage> binding)
 {
     mOutgoingSerializer = outgoingSerializer;
     mPlayer             = player;
     mRecorder           = recorder;
     mBinding            = binding;
 }
Exemple #6
0
 protected MessageWebSocketConnection(string uri,
                                      IWampBinding <TMessage> binding, SocketMessageType messageType)
 {
     mUri               = uri;
     mBinding           = binding;
     mSocketMessageType = messageType;
 }
 public WebSocket4NetConnection(string serverAddress,
                                IWampBinding <TMessage> binding,
                                Action <SecurityOption> configureSecurityOptions)
     : this(new WebSocket(serverAddress, binding.Name, WebSocketVersion.None), binding)
 {
     configureSecurityOptions?.Invoke(WebSocket.Security);
 }
        public static IWampBindingHost CreateHost <TMessage>
            (this IWampBinding <TMessage> binding,
            IWampHostedRealmContainer realmContainer,
            IWampConnectionListener <TMessage> connectionListener,
            IWampUriValidator uriValidator,
            IWampSessionMapper sessionIdMap)
        {
            if (binding is IWampRouterBinding <TMessage> routerBinding)
            {
                return(routerBinding.CreateHost(realmContainer, connectionListener, sessionIdMap));
            }
            else
            {
                IWampRouterBuilder routerBuilder = new WampRouterBuilder(uriValidator);

                WampBindingHost <TMessage> result =
                    new WampBindingHost <TMessage>(realmContainer,
                                                   routerBuilder,
                                                   connectionListener,
                                                   binding,
                                                   sessionIdMap);

                return(result);
            }
        }
        public static IWampBindingHost CreateHost <TMessage>
            (this IWampBinding <TMessage> binding,
            IWampHostedRealmContainer realmContainer,
            IWampConnectionListener <TMessage> connectionListener,
            IWampUriValidator uriValidator)
        {
            IWampRouterBinding <TMessage> routerBinding = binding as IWampRouterBinding <TMessage>;

            if (routerBinding != null)
            {
                return(routerBinding.CreateHost(realmContainer, connectionListener));
            }
            else
            {
                IWampRouterBuilder routerBuilder = new WampRouterBuilder(uriValidator);

                WampBindingHost <TMessage> result =
                    new WampBindingHost <TMessage>(realmContainer,
                                                   routerBuilder,
                                                   connectionListener,
                                                   binding);

                return(result);
            }
        }
 public IWampChannel CreateChannel<TMessage>(string realm, IControlledWampConnection<TMessage> connection,
     IWampBinding<TMessage> binding, IWampClientAuthenticator authenticator)
 {
     WampChannelBuilder<TMessage> builder = GetChannelBuilder(binding);
     WampChannel<TMessage> channel = builder.CreateChannel(realm, connection, authenticator);
     return channel;
 }
Exemple #11
0
        private WebSocket ActivateWebSocket(IWampBinding binaryBinding)
        {
            WebSocket webSocket = mWebSocketFactory(binaryBinding.Name);

            SecurityOptionsConfigureAction?.Invoke(webSocket.Security);

            return(webSocket);
        }
Exemple #12
0
        public IControlledWampConnection <TMessage> CreateClientConnection <TMessage>
            (IWampBinding <TMessage> binding, IScheduler scheduler)
        {
            InMemoryConnectionListener <TMessage> casted =
                GetOrRegisterBinding(binding);

            return(casted.CreateClientConnection(scheduler));
        }
 public IWampChannel CreateChannel<TMessage>(string realm, Func<IControlledWampConnection<TMessage>> connectionFactory,
     IWampBinding<TMessage> binding,
     IWampClientAuthenticator authenticator)
 {
     return this.CreateChannel(realm,
                               new ReviveClientConnection<TMessage>(connectionFactory), binding,
                               authenticator);
 }
 public WampPubSubServer(IWampTopicContainer topicContainer, IWampEventSerializer eventSerializer, IWampBinding <TMessage> binding, IWampUriValidator uriValidator)
 {
     mLogger            = LogProvider.GetLogger(this.GetType());
     mBinding           = binding;
     mUriValidator      = uriValidator;
     mEventSerializer   = eventSerializer;
     mRawTopicContainer = new WampRawTopicContainer <TMessage>(topicContainer, mEventSerializer, mBinding);
 }
Exemple #15
0
 public WampRawTopicContainer(IWampTopicContainer topicContainer,
                              IWampEventSerializer eventSerializer,
                              IWampBinding <TMessage> binding)
 {
     mTopicContainer  = topicContainer;
     mEventSerializer = eventSerializer;
     mBinding         = binding;
 }
 public WampAuthenticationSessionServer(IWampBinding <TMessage> binding,
                                        IWampHostedRealmContainer realmContainer,
                                        IWampRouterBuilder builder,
                                        IWampEventSerializer eventSerializer,
                                        IWampSessionAuthenticatorFactory sessionAuthenticatorFactory)
     : base(binding, realmContainer, builder, eventSerializer)
 {
     mSessionAuthenticatorFactory = sessionAuthenticatorFactory;
 }
 public WebSocket4NetConnection(WebSocket webSocket,
                                IWampBinding <TMessage> binding)
 {
     mBinding           = binding;
     mWebSocket         = webSocket;
     mWebSocket.Opened += WebSocketOnOpened;
     mWebSocket.Closed += WebSocketOnClosed;
     mWebSocket.Error  += WebSocketOnError;
 }
Exemple #18
0
        private IWampConnectionListener <TMessage> RegisterBinding <TMessage>(IWampBinding <TMessage> binding)
        {
            InMemoryConnectionListener <TMessage> result =
                new InMemoryConnectionListener <TMessage>(mRouterScheduler, binding);

            mBindings[binding.Name] = result;

            return(result);
        }
 public WampRawTopic(string topicUri, SubscribeOptions subscribeOptions, IWampCustomizedSubscriptionId customizedSubscriptionId, IWampEventSerializer serializer, IWampBinding <TMessage> binding)
 {
     mSerializer               = serializer;
     mSubscriberBook           = new RawTopicSubscriberBook(this);
     mTopicUri                 = topicUri;
     mBinding                  = binding;
     mSubscribeOptions         = subscribeOptions;
     mCustomizedSubscriptionId = customizedSubscriptionId;
 }
        private WampChannelBuilder<TMessage> GetChannelBuilder<TMessage>(IWampBinding<TMessage> binding)
        {
            object result =
                mBindingToChannelBuilder.GetOrAdd
                    (binding,
                     x => new WampChannelBuilder<TMessage>(binding));

            return (WampChannelBuilder<TMessage>) result;
        }
        protected WampAuthenticationBinding(IWampBinding <TMessage> binding,
                                            IWampSessionAuthenticatorFactory sessionAuthenticationFactory,
                                            IWampUriValidator uriValidator)
        {
            mBinding      = binding;
            mUriValidator = uriValidator;

            mSessionAuthenticationFactory =
                new RestrictedSessionAuthenticationFactory(sessionAuthenticationFactory);
        }
        public IControlledWampConnection <TMessage> Activate <TMessage>(IWampBinding <TMessage> binding)
        {
            Func <IControlledWampConnection <TMessage> > factory =
                () => GetConnectionFactory(binding);

            ReviveClientConnection <TMessage> result =
                new ReviveClientConnection <TMessage>(factory);

            return(result);
        }
 public WebSocket4NetConnection(WebSocket webSocket,
                                IWampBinding <TMessage> binding)
 {
     Binding            = binding;
     mWebSocket         = webSocket;
     mLogger            = LogProvider.GetLogger(this.GetType());
     mWebSocket.Opened += WebSocketOnOpened;
     mWebSocket.Closed += WebSocketOnClosed;
     mWebSocket.Error  += WebSocketOnError;
 }
        private static WampClientBuilderFactory <TMessage> GetWampClientBuilder(IWampBinding <TMessage> binding, IWampOutgoingRequestSerializer outgoingRequestSerializer)
        {
            WampOutgoingMessageHandlerBuilder <TMessage> wampOutgoingMessageHandlerBuilder =
                new WampOutgoingMessageHandlerBuilder <TMessage>();

            return(new WampClientBuilderFactory <TMessage>
                       (outgoingRequestSerializer,
                       wampOutgoingMessageHandlerBuilder,
                       binding));
        }
Exemple #25
0
        private void RegisterBinding(IWampBinding binding, ConnectionListener listener)
        {
            if (mBindings.ContainsKey(binding.Name))
            {
                throw new ArgumentException("Already registered a binding for protocol: " +
                                            binding.Name,
                                            nameof(binding));
            }

            mBindings.Add(binding.Name, listener);
        }
 public IWampConnectionListener <TMessage> GetListener <TMessage>(IWampBinding <TMessage> binding)
 {
     if (!(binding is IWampTextBinding <TMessage> textBinding))
     {
         throw new ArgumentException("This transport supports only text binding.", nameof(binding));
     }
     else
     {
         return(GetListener(textBinding));
     }
 }
Exemple #27
0
        private IControlledWampConnection <TMessage> GetConnectionFactory <TMessage>(IWampBinding <TMessage> binding)
        {
            IWampTextBinding <TMessage> textBinding = binding as IWampTextBinding <TMessage>;

            if (textBinding != null)
            {
                return(CreateTextConnection(textBinding));
            }

            throw new Exception();
        }
        public WampRpcServer(IWampRpcOperationCatalog catalog, IWampBinding <TMessage> binding, IWampUriValidator uriValidator)
        {
            mInvoker      = catalog;
            mUriValidator = uriValidator;
            mLogger       = LogProvider.GetLogger(this.GetType());
            mFormatter    = binding.Formatter;

            mHandler = new WampCalleeInvocationHandler <TMessage>(binding.Formatter);

            mCalleeCatalog = new WampCalleeOperationCatalog <TMessage>
                                 (catalog, mHandler);
        }
        public WampRealmProxy(string name, IWampServerProxy proxy, IWampBinding <TMessage> binding, IWampClientAuthenticator authenticator)
        {
            mName  = name;
            mProxy = proxy;
            IWampFormatter <TMessage> formatter = binding.Formatter;

            mMonitor        = new WampSessionClient <TMessage>(this, formatter, authenticator);
            mRpcCatalog     = new WampRpcOperationCatalogProxy <TMessage>(proxy, formatter, mMonitor);
            mTopicContainer = new WampTopicContainerProxy <TMessage>(proxy, formatter, mMonitor);
            mServices       = new WampRealmProxyServiceProvider(this);
            mAuthenticator  = authenticator;
        }
Exemple #30
0
        public WampChannelBuilder(IWampBinding <TMessage> binding)
        {
            mBinding = binding;

            IWampFormatter <TMessage> formatter = mBinding.Formatter;

            mFactory =
                new WampServerProxyBuilder <TMessage, IWampClient <TMessage>, IWampServerProxy>(
                    new WampOutgoingRequestSerializer <TMessage>(formatter),
                    new WampServerProxyOutgoingMessageHandlerBuilder <TMessage, IWampClient <TMessage> >
                        (new WampServerProxyIncomingMessageHandlerBuilder <TMessage, IWampClient <TMessage> >(formatter)));
        }