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);
            }
        }
Exemplo n.º 2
0
        public IWampBindingHost CreateHost(IWampHostedRealmContainer realmContainer,
                                           IWampConnectionListener <TMessage> connectionListener,
                                           IWampSessionMapper sessionIdMap)
        {
            IWampRouterBuilder wampRouterBuilder = new WampAuthenticationRouterBuilder(mSessionAuthenticationFactory, mUriValidator);

            return(new WampBindingHost <TMessage>(realmContainer,
                                                  wampRouterBuilder,
                                                  connectionListener,
                                                  mBinding,
                                                  sessionIdMap));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Initializes a new instance of <see cref="InMemoryWampHost"/> given the
        /// <see cref="IWampRealmContainer"/> associated with this host.
        /// </summary>
        /// <param name="realmContainer"></param>
        /// <param name="uriValidator"></param>
        /// <param name="sessionIdMap"></param>
        public InMemoryWampHost(IWampRealmContainer realmContainer,
                                IWampUriValidator uriValidator,
                                IWampSessionMapper sessionIdMap) :
            base(realmContainer, uriValidator, sessionIdMap)
        {
            mInternalBinding = new InMemoryBinding();

            mInternalTransport = new InMemoryTransport(Scheduler.Immediate);

            this.RegisterTransport
                (mInternalTransport,
                mInternalBinding);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of <see cref="WampHostBase"/> given the
 /// <see cref="IWampRealmContainer"/> associated with this host.
 /// </summary>
 /// <param name="realmContainer"></param>
 /// <param name="uriValidator"></param>
 /// <param name="sessionIdMap"></param>
 public WampHostBase(IWampRealmContainer realmContainer, IWampUriValidator uriValidator, IWampSessionMapper sessionIdMap)
 {
     mUriValidator  = uriValidator;
     RealmContainer = new HostedRealmContainer(realmContainer);
     mSessionIdMap  = sessionIdMap;
 }
Exemplo n.º 5
0
 public WampClientContainer(IWampClientBuilderFactory <TMessage, IWampClientProxy <TMessage> > clientBuilderFactory, IWampSessionMapper sessionIdMap) :
     base(clientBuilderFactory)
 {
     mSessionIdMap = sessionIdMap;
 }
Exemplo n.º 6
0
        private WampListener <TMessage> GetWampListener(IWampConnectionListener <TMessage> connectionListener, IWampBinding <TMessage> binding, IWampOutgoingRequestSerializer outgoingRequestSerializer, IWampSessionMapper sessionIdMap)
        {
            IWampClientBuilderFactory <TMessage, IWampClientProxy <TMessage> > clientBuilderFactory =
                GetWampClientBuilder(binding, outgoingRequestSerializer);

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

            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));
        }
Exemplo n.º 7
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="builder">The <see cref="IWampRouterBuilder"/> to use for this host.</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>
        /// <param name="sessionIdMap"></param>
        public WampBindingHost(IWampHostedRealmContainer realmContainer, IWampRouterBuilder builder, IWampConnectionListener <TMessage> connectionListener, IWampBinding <TMessage> binding, IWampSessionMapper sessionIdMap)
        {
            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, sessionIdMap);
        }