예제 #1
0
        private WampListener <TMessage> GetWampListener(IWampConnectionListener <TMessage> connectionListener, IWampBinding <TMessage> binding, IWampOutgoingRequestSerializer outgoingRequestSerializer)
        {
            IWampClientBuilderFactory <TMessage, IWampClientProxy <TMessage> > clientBuilderFactory =
                GetWampClientBuilder(binding, outgoingRequestSerializer);

            IWampClientContainer <TMessage, IWampClientProxy <TMessage> > clientContainer =
                new WampClientContainer <TMessage>(clientBuilderFactory);

            IWampRequestMapper <TMessage> requestMapper =
                new WampRequestMapper <TMessage>(typeof(WampServer <TMessage>),
                                                 binding.Formatter);

            WampRealmMethodBuilder <TMessage> methodBuilder =
                new WampRealmMethodBuilder <TMessage>(mSession, binding.Formatter);

            IWampIncomingMessageHandler <TMessage, IWampClientProxy <TMessage> > wampIncomingMessageHandler =
                new WampIncomingMessageHandler <TMessage, IWampClientProxy <TMessage> >
                    (requestMapper,
                    methodBuilder);

            return(new WampListener <TMessage>
                       (connectionListener,
                       wampIncomingMessageHandler,
                       clientContainer,
                       mSession));
        }
예제 #2
0
 public WampCraHost(IWampCraServerBuilder <TMessage> serverBuilder,
                    IWampConnectionListener <TMessage> connectionListener,
                    IWampFormatter <TMessage> formatter)
     : base(serverBuilder, connectionListener, formatter)
 {
     serverBuilder.InitializeAuthenticationBuilder(formatter, base.MetadataCatalog, base.TopicContainerExtended);
 }
        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);
            }
        }
예제 #4
0
        private static WampListener <TMessage> GetWampListener(IWampConnectionListener <TMessage> connectionListener, IWampFormatter <TMessage> formatter, IWampServer <TMessage> server)
        {
            IWampClientBuilderFactory <TMessage, IWampClient> clientBuilderFactory =
                GetWampClientBuilder(formatter);

            IWampClientContainer <TMessage, IWampClient> clientContainer =
                new WampClientContainer <TMessage>(clientBuilderFactory);

            IWampRequestMapper <TMessage> requestMapper =
                new WampRequestMapper <TMessage>(server.GetType(),
                                                 formatter);

            WampMethodBuilder <TMessage, IWampClient> methodBuilder =
                new WampMethodBuilder <TMessage, IWampClient>(server, formatter);

            IWampIncomingMessageHandler <TMessage, IWampClient> wampIncomingMessageHandler =
                new WampIncomingMessageHandler <TMessage, IWampClient>
                    (requestMapper,
                    methodBuilder);

            return(new WampListener <TMessage>
                       (connectionListener,
                       wampIncomingMessageHandler,
                       clientContainer));
        }
        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);
            }
        }
예제 #6
0
 /// <summary>
 /// Creates a new instance of <see cref="WampListener{TMessage}"/>
 /// </summary>
 /// <param name="listener">The <see cref="IWampConnectionListener{TMessage}"/> used in order to
 ///     accept incoming connections.</param>
 /// <param name="handler">The <see cref="IWampIncomingMessageHandler{TMessage}"/> used
 ///     in order to dispatch incoming messages.</param>
 /// <param name="clientContainer">The <see cref="IWampClientContainer{TMessage,TClient}"/> use
 ///     in order to store the connected clients.</param>
 /// <param name="sessionHandler">A session handler that handles new clients.</param>
 public WampListener(IWampConnectionListener <TMessage> listener,
                     IWampIncomingMessageHandler <TMessage, IWampClientProxy <TMessage> > handler,
                     IWampClientContainer <TMessage, IWampClientProxy <TMessage> > clientContainer,
                     IWampSessionServer <TMessage> sessionHandler)
     : base(listener, handler, clientContainer)
 {
     mSessionHandler = sessionHandler;
 }
        public IWampBindingHost CreateHost(IWampHostedRealmContainer realmContainer, IWampConnectionListener <TMessage> connectionListener)
        {
            IWampRouterBuilder wampRouterBuilder = new WampAuthenticationRouterBuilder(mSessionAuthenticationFactory, mUriValidator);

            return(new WampBindingHost <TMessage>(realmContainer,
                                                  wampRouterBuilder,
                                                  connectionListener,
                                                  mBinding));
        }
예제 #8
0
 /// <summary>
 /// Creates a new instance of <see cref="WampListener{TMessage, TClient}"/>
 /// </summary>
 /// <param name="listener">The <see cref="IWampConnectionListener{TMessage}"/> used in order to
 /// accept incoming connections.</param>
 /// <param name="handler">The <see cref="IWampIncomingMessageHandler{TMessage,TClient}"/> used
 /// in order to dispatch incoming messages.</param>
 /// <param name="clientContainer">The <see cref="IWampClientContainer{TMessage,TClient}"/> use
 /// in order to store the connected clients.</param>
 public WampListener(IWampConnectionListener <TMessage> listener,
                     IWampIncomingMessageHandler <TMessage, TClient> handler,
                     IWampClientContainer <TMessage, TClient> clientContainer)
 {
     mHandler         = handler;
     mClientContainer = clientContainer;
     mListener        = listener;
     mLogger          = LogProvider.GetLogger(this.GetType());
 }
예제 #9
0
        private WampListener <JToken> GetListener(IWampConnectionListener <JToken> listener, object wampServer)
        {
            IWampIncomingMessageHandler <JToken, IWampClient> handler = GetHandler(wampServer);

            return(new WampListener <JToken>
                       (listener,
                       handler,
                       new WampClientContainer <JToken>
                           (new WampClientBuilderFactory <JToken>
                               (new WampOutgoingRequestSerializer <JToken>(mFormatter),
                               new WampOutgoingMessageHandlerBuilder <JToken>()))));
        }
예제 #10
0
        public WampHost(IWampServerBuilder <TMessage> serverBuilder, IWampConnectionListener <TMessage> connectionListener, IWampFormatter <TMessage> formatter)
        {
            mFormatter = formatter;

            mMetadataCatalog = new WampRpcMetadataCatalog();

            mTopicContainer = new WampTopicContainer <TMessage>();

            mServer = serverBuilder.Build(formatter, mMetadataCatalog, mTopicContainer);

            mListener = GetWampListener(connectionListener, formatter, mServer);
        }
예제 #11
0
        private IWampBindingHost GetBindingHost <TMessage>
            (IWampBinding <TMessage> binding,
            IEnumerable <IWampTransport> transports)
        {
            List <IWampConnectionListener <TMessage> > listeners =
                new List <IWampConnectionListener <TMessage> >();

            foreach (IWampTransport transport in transports)
            {
                IWampConnectionListener <TMessage> listener = transport.GetListener(binding);
                listeners.Add(listener);
            }

            IWampConnectionListener <TMessage> compositeListener =
                new CompositeListener <TMessage>(listeners);

            IWampBindingHost host =
                binding.CreateHost(RealmContainer, compositeListener, mUriValidator, mSessionIdMap);

            return(host);
        }
예제 #12
0
        private WampListener <JToken> GetListener(IWampConnectionListener <JToken> listener, IWampClient wampClient)
        {
            Mock <IWampServer <JToken> > mock = new Mock <IWampServer <JToken> >();

            Mock <IWampClientBuilder <JToken, IWampClient> > clientBuilderMock =
                new Mock <IWampClientBuilder <JToken, IWampClient> >();

            clientBuilderMock.Setup
                (x => x.Create(It.IsAny <IWampConnection <JToken> >()))
            .Returns(wampClient);

            IWampIncomingMessageHandler <JToken, IWampClient> handler = GetHandler(mock.Object);

            Mock <IWampClientBuilderFactory <JToken, IWampClient> > factory =
                new Mock <IWampClientBuilderFactory <JToken, IWampClient> >();

            factory.Setup(x => x.GetClientBuilder(It.IsAny <IWampClientContainer <JToken, IWampClient> >()))
            .Returns(clientBuilderMock.Object);

            return(new WampListener <JToken>
                       (listener,
                       handler,
                       new WampClientContainer <JToken>(factory.Object)));
        }
예제 #13
0
        private WampListener<JToken> GetListener(IWampConnectionListener<JToken> listener, IWampClient wampClient)
        {
            Mock<IWampServer<JToken>> mock = new Mock<IWampServer<JToken>>();

            Mock<IWampClientBuilder<JToken, IWampClient>> clientBuilderMock =
                new Mock<IWampClientBuilder<JToken, IWampClient>>();

            clientBuilderMock.Setup
                (x => x.Create(It.IsAny<IWampConnection<JToken>>()))
                             .Returns(wampClient);

            IWampIncomingMessageHandler<JToken, IWampClient> handler = GetHandler(mock.Object);

            Mock<IWampClientBuilderFactory<JToken, IWampClient>> factory =
                new Mock<IWampClientBuilderFactory<JToken, IWampClient>>();

            factory.Setup(x => x.GetClientBuilder(It.IsAny<IWampClientContainer<JToken, IWampClient>>()))
                .Returns(clientBuilderMock.Object);

            return new WampListener<JToken>
                (listener,
                 handler,
                 new WampClientContainer<JToken, IWampClient>(factory.Object));
        }
        private WampListener<JToken> GetListener(IWampConnectionListener<JToken> listener, object wampServer)
        {
            IWampIncomingMessageHandler<JToken, IWampClient> handler = GetHandler(wampServer);

            return new WampListener<JToken>
                (listener,
                 handler,
                 new WampClientContainer<JToken, IWampClient>
                     (new WampClientBuilderFactory<JToken>
                          (new WampSessionIdGenerator(),
                           new WampOutgoingRequestSerializer<JToken>(mFormatter),
                           new WampOutgoingMessageHandlerBuilder<JToken>())));
        }
예제 #15
0
 /// <summary>
 /// Creates a new instance of <see cref="WampListener{TMessage}"/>
 /// </summary>
 /// <param name="listener">The <see cref="IWampConnectionListener{TMessage}"/> used in order to
 /// accept incoming connections.</param>
 /// <param name="handler">The <see cref="IWampIncomingMessageHandler{TMessage,TClient}"/> used
 /// in order to dispatch incoming messages.</param>
 /// <param name="clientContainer">The <see cref="IWampClientContainer{TMessage,TClient}"/> use
 /// in order to store the connected clients.</param>
 public WampListener(IWampConnectionListener <TMessage> listener,
                     IWampIncomingMessageHandler <TMessage, IWampClient> handler,
                     IWampClientContainer <TMessage, IWampClient> clientContainer)
     : base(listener, handler, clientContainer)
 {
 }
예제 #16
0
        /// <summary>
        /// Creates a new instance of <see cref="WampBindingHost{TMessage}"/>
        /// </summary>
        /// <param name="realmContainer">The <see cref="IWampRealmContainer"/> this binding host
        /// is associated with.</param>
        /// <param name="connectionListener">The <see cref="IWampConnectionListener{TMessage}"/> this
        /// binding host listens to.</param>
        /// <param name="binding">The <see cref="IWampBinding{TMessage}"/> associated with this binding host.</param>
        public WampBindingHost(IWampHostedRealmContainer realmContainer, IWampRouterBuilder builder, IWampConnectionListener <TMessage> connectionListener, IWampBinding <TMessage> binding)
        {
            IWampOutgoingRequestSerializer outgoingRequestSerializer =
                new WampOutgoingRequestSerializer <TMessage>(binding.Formatter);

            IWampEventSerializer eventSerializer = GetEventSerializer(outgoingRequestSerializer);

            IWampSessionServer <TMessage> session =
                builder.CreateSessionHandler(realmContainer, binding, eventSerializer);

            mSession = session;

            mListener = GetWampListener(connectionListener, binding, outgoingRequestSerializer);
        }
예제 #17
0
 public WampCraHost(IWampConnectionListener <TMessage> connectionListener,
                    IWampFormatter <TMessage> formatter,
                    WampCraAuthenticaticatorBuilder <TMessage> craAuthenticaticatorBuilder) :
     this(new WampCraServerBuilder <TMessage>(craAuthenticaticatorBuilder), connectionListener, formatter)
 {
 }
예제 #18
0
 public WampHost(IWampConnectionListener <TMessage> connectionListener, IWampFormatter <TMessage> formatter) :
     this(new WampServerBuilder <TMessage>(), connectionListener, formatter)
 {
 }