コード例 #1
0
        public NameValueCollection Interact(IServerEndpoint serverEndpoint, NameValueCollection message)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverEndpoint.Url + ":" + serverEndpoint.Port);

            byte[]          postBuffer;
            Stream          postData       = request.GetRequestStream();
            HttpWebResponse response       = (HttpWebResponse)request.GetResponse();
            Stream          responseStream = response.GetResponseStream();

            byte[] responseBuffer;
            string result;
            NameValueCollection nameValueCollection = new NameValueCollection();

            request.Method = "POST";
            foreach (KeyValuePair <string, string> collection in message)
            {
                postBuffer            = serializer.Serialize(collection.Value);
                request.ContentLength = postBuffer.Length;
                postData.Write(postBuffer, 0, postBuffer.Length);
                responseBuffer = new byte[BufferSize];
                responseStream.Read(responseBuffer, 0, responseBuffer.Length);
                result = serializer.Deserialize <string>(responseBuffer);
                nameValueCollection.Add(collection.Key, result);
            }
            postData.Close();
            response.Close();
            responseStream.Close();
            return(nameValueCollection);
        }
コード例 #2
0
 private void ConfigureConnection(IServerEndpoint endpoint, IRemoteConnection clientConnection)
 {
     clientConnection.OperationDispatcher
     .RegisterHandler <ICalculator>(new Calculator())
     .RegisterHandler <IGreeter>(new Greeter())
     .RegisterHandler <IRemoteService>(new RemoteService(clientConnection, endpoint.BroadcastRemoteExecutor));
 }
コード例 #3
0
        public void Should_configure_opened_connection()
        {
            var wasConfigured = false;

            _subject = new GenericServerEndpoint(_connectionListener, _config, () => _operationDispatcher, (e, c) => wasConfigured = true);
            OpenChannel();

            Assert.That(wasConfigured, Is.True);
        }
コード例 #4
0
        public void SetUp()
        {
            Configurator.Configure();
            _connectionListener = new LidgrenServerConnectionListener(_applicationId, _listenAddress, _port, new BinaryMessageSerializer(), new UnencryptedCryptoProviderResolver());

            _dispatcher = new OperationDispatcher();
            _dispatcher.RegisterHandler <ICalculator>(new Calculator());
            _dispatcher.RegisterHandler <IGreeter>(new Greeter());

            _server = new GenericServerEndpoint(_connectionListener, new ServerConfig(), () => _dispatcher);
            _server.Start();
        }
コード例 #5
0
        public void SetUp()
        {
            _connectionListener    = MockRepository.GenerateMock <IServerConnectionListener>();
            _remoteExecutorFactory = MockRepository.GenerateMock <IRemoteExecutorFactory>();
            _taskScheduler         = MockRepository.GenerateMock <ITaskScheduler>();
            _config = MockRepository.GenerateMock <IServerConfig>();
            _config.Stub(c => c.MaxConnections).Return(10);
            _config.Stub(c => c.RemoteExecutorFactory).Return(_remoteExecutorFactory);
            _config.Stub(c => c.TaskScheduler).Return(_taskScheduler);
            _operationDispatcher = MockRepository.GenerateMock <IOperationDispatcher>();
            _operationDispatcher.Stub(d => d.MessageDispatcher).Return(MockRepository.GenerateMock <IMessageDispatcher>());
            _broadcastChannel = MockRepository.GenerateMock <IBroadcastChannel>();
            _connectionListener.Stub(l => l.BroadcastChannel).Return(_broadcastChannel);
            _broadcastExecutor = MockRepository.GenerateMock <IBroadcastRemoteExecutor>();
            _remoteExecutorFactory.Stub(f => f.CreateBroadcastRemoteExecutor(_broadcastChannel)).Return(_broadcastExecutor);

            _subject = new GenericServerEndpoint(_connectionListener, _config, () => _operationDispatcher);
        }
コード例 #6
0
        public void ValidateIpEndPointProvision()
        {
            connectionListener = new LidgrenServerConnectionListener(applicationId, ListenAddress, Port, new BinaryMessageSerializer(), new UnencryptedCryptoProviderResolver());
            dispatcher         = new OperationDispatcher();
            IPEndPoint senderEndPoint = null;
            IPEndPoint clientEndPoint = null;

            dispatcher.RegisterHandler <IEndPointProvisioner>(new EndPointProvisioner {
                OnStuff = e => senderEndPoint = e
            });
            server = new GenericServerEndpoint(connectionListener, new ServerConfig(), () => dispatcher);
            server.Start();

            using (ClientConnection client = CreateClientConnection())
            {
                client.Open();
                clientEndPoint = client.GetClientEndpoint();
                client.RemoteExecutor.Create <IEndPointProvisioner>().DoStuff(null);
            }
            server.Dispose();
            Assert.AreEqual(clientEndPoint, senderEndPoint);
        }