예제 #1
0
        /// <summary>
        /// Creates a new instance of <see cref="WampServerProxyHandler{TMessage}"/>.
        /// </summary>
        /// <param name="connection">The connection used to send and receieve <see cref="WampMessage{TMessage}"/>s.</param>
        /// <param name="incomingHandler">The handler used to handle incoming messages.</param>
        public WampServerProxyHandler(IWampConnection <TMessage> connection,
                                      IWampIncomingMessageHandler <TMessage> incomingHandler)
        {
            mConnection      = connection;
            mIncomingHandler = incomingHandler;

            mConnection.MessageArrived += MessageArrived;
        }
예제 #2
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;
 }
예제 #3
0
 public MessagePlayer(IEnumerable <WampMessage <TMessage> > messages,
                      WampMessageType[] categories,
                      IWampIncomingMessageHandler <TMessage, IWampClientProxy <TMessage> > handler)
 {
     mMessages   = messages;
     mCategories = categories;
     mServerPipe = handler;
 }
예제 #4
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());
 }
예제 #5
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>()))));
        }
예제 #6
0
        private Mock <IWampServer <JToken> > CallHandleOnMock(IWampClient client, string message)
        {
            Mock <IWampServer <JToken> > mock =
                new Mock <IWampServer <JToken> >();

            JToken raw = JToken.Parse(message);

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

            handler.HandleMessage(client, mMessageFormatter.Parse(raw));

            return(mock);
        }
예제 #7
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)));
        }
예제 #8
0
        private static MockClient <IWampClientProxy <MockRaw> > GetSubscriber(Type scenario, WampMockClientBuilder <MockRaw> clientBuilder, IWampIncomingMessageHandler <MockRaw, IWampClientProxy <MockRaw> > handler, IEnumerable <WampMessage <MockRaw> > calls)
        {
            WampMessage <MockRaw> welcome =
                GetCalls(scenario, Channel.BrokerToSubscriber,
                         new WampMessageType[] { WampMessageType.v2Welcome })
                .FirstOrDefault();

            // TODO: After enough events unsubscribe.
            NullPlayer <MockRaw> nullPlayer =
                new NullPlayer <MockRaw>();

            IMessageRecorder <MockRaw> recorder =
                new ResponsiveMessageRecorder(calls,
                                              new Dictionary <WampMessageType, string>()
            {
                { WampMessageType.v2Subscribed, "subscriptionId" }
            });

            IWampClientProxy <MockRaw> built =
                clientBuilder.Create(nullPlayer,
                                     recorder,
                                     welcome);

            MockClient <IWampClientProxy <MockRaw> > result =
                new MockClient <IWampClientProxy <MockRaw> >(built, recorder);

            return(result);
        }
        private MockClient <IWampClientProxy <MockRaw> > GetCallee(Type scenario, WampMockClientBuilder <MockRaw> clientBuilder, IWampIncomingMessageHandler <MockRaw, IWampClientProxy <MockRaw> > handler)
        {
            WampMessage <MockRaw> welcome =
                GetCalls(scenario, Channel.DealerToCallee,
                         new WampMessageType[] { WampMessageType.v2Welcome })
                .FirstOrDefault();

            IEnumerable <WampMessage <MockRaw> > calls =
                GetCalls(scenario, Channel.CalleeToDealer, MessageTypes.Rpc).Concat
                    (GetCalls(scenario, Channel.DealerToCallee, MessageTypes.Rpc)).ToList();

            CalleeMessagePlayer player =
                new CalleeMessagePlayer(calls,
                                        new[] { WampMessageType.v2Invocation },
                                        handler);

            IMessageRecorder <MockRaw> recorder =
                new ResponsiveMessageRecorder(calls,
                                              new Dictionary <WampMessageType, string>()
            {
                { WampMessageType.v2Registered, "registrationId" }
            });

            IWampClientProxy <MockRaw> built =
                clientBuilder.Create(player,
                                     recorder,
                                     welcome);

            player.Client = built;

            MockClient <IWampClientProxy <MockRaw> > result =
                new MockClient <IWampClientProxy <MockRaw> >(built, recorder);

            return(result);
        }
        public IWampOutgoingMessageHandler Build(TRawClient client, IWampConnection <TMessage> connection)
        {
            IWampIncomingMessageHandler <TMessage> incomingMessageHandler = mIncomingHandlerBuilder.Build(client, connection);

            return(new WampServerProxyHandler <TMessage>(connection, incomingMessageHandler));
        }
예제 #11
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)
 {
 }
예제 #12
0
 public CalleeMessagePlayer(IEnumerable <WampMessage <MockRaw> > messages, WampMessageType[] categories, IWampIncomingMessageHandler <MockRaw, IWampClientProxy <MockRaw> > handler)
     : base(messages, categories, handler)
 {
 }