public async Task <IActionResult> Edit(int id, [Bind("HostServerID,Name,Address,SshUserName")] HostServer hostServer)
        {
            if (id != hostServer.HostServerID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(hostServer);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!HostServerExists(hostServer.HostServerID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(hostServer));
        }
Exemplo n.º 2
0
	    private static int Execute(ServerParameters arg) {
	        var config = arg.BuildServerConfig();
	        EnsureRequiredApplications(arg,config);
	        config.DllFolder = EnvironmentInfo.ResolvePath("@repos@/.build/bin/all");
            var command = arg.Get("command", "");
	        if (string.IsNullOrWhiteSpace(command)) {
	            Console.WriteLine("LOGLEVEL " + config.LogLevel);
	        }
	        var hostServer = new HostServer(config);
            hostServer.Initialize();
            var consoleContext = new ConsoleContext
            {
                Container = hostServer.Container,
                Parameters = arg
            };
            var listener = new ConsoleListener(consoleContext);
            
	        if (!string.IsNullOrWhiteSpace(command)) {
	            var task = listener.Call(command);
	            task.Wait();
	        }
	        else {

	            LogHostInfo(arg, config);
	            hostServer.Start();
	            Console.WriteLine("LOGLEVEL " + config.LogLevel);

	            listener.Log = hostServer.Container.Get<ILoggyManager>().Get("console");
	            listener.Run();
	            hostServer.Stop();
	        }
	        return 0;
	    }
Exemplo n.º 3
0
        public void HighLoad()
        {
            var hs = new HostServer(14910);

            hs.Initialize();
            var mvc = (MvcFactory)hs.Container.Get <IMvcFactory>();

            mvc.Register(typeof(TestAction).Assembly);
            var tasks = new List <Task>();

            for (var i = 0; i < 20; i++)
            {
                for (var j = 0; j < 4; j++)
                {
                    tasks.Add(Task.Run(() => {
                        hs.Call("/test/best");
                    }));
                }
                Console.WriteLine(i);
                Thread.Sleep(200);
            }
            Task.WaitAll(tasks.ToArray());
            Console.WriteLine(mvc.GetMetric("action.pool.count"));
            Console.WriteLine(TestAction.creates);
            Assert.Greater(10, mvc.GetMetric("action.pool.count").ToInt());
            Assert.Greater(10, TestAction.creates);
        }
Exemplo n.º 4
0
        public void CanUseCacheOnResolutionIntegration()
        {
            var xml  = BSharpCompiler.Compile(ProductionCode)["tiles"].Compiled;
            var conf = new HostConfig(xml);
            var qh   = new HostServer(conf);

            qh.Start();
            try
            {
                var response = new HttpClient().Call("http://127.0.0.1:14990/map/8/173/76.png");
                Assert.AreEqual(200, response.State);
                Assert.AreEqual("image/png; charset=utf-8", response.ContentType);
                var png = (Bitmap)Image.FromStream(new MemoryStream(response.Data));
                Assert.AreEqual(ImageFormat.Png, png.RawFormat);
                var pixel = png.GetPixel(70, 40);
                Assert.AreEqual(174, pixel.R);
                Assert.AreEqual(209, pixel.G);
                Assert.AreEqual(160, pixel.B);
                response = new HttpClient().Call("http://127.0.0.1:14990/map/6/11/26.png");
                Assert.AreEqual(200, response.State);
                Assert.AreEqual("image/png; charset=utf-8", response.ContentType);
                png = (Bitmap)Image.FromStream(new MemoryStream(response.Data));
                Assert.AreEqual(ImageFormat.Png, png.RawFormat);
                pixel = png.GetPixel(54, 18);
                Assert.AreEqual(181, pixel.R);
                Assert.AreEqual(171, pixel.G);
                Assert.AreEqual(201, pixel.B);
            }
            finally
            {
                qh.Stop();
            }
        }
Exemplo n.º 5
0
        public void CanProxiseByAppid()
        {
            var aconfig1 = new HostConfig();

            aconfig1.AddQorpentBinding(98);
            var aconfig2 = new HostConfig();

            aconfig2.AddQorpentBinding(99);
            aconfig2.Proxize["/call1"] = "appid=98";
            var h1 = new HostServer(aconfig1);
            var h2 = new HostServer(aconfig2);

            h1.On("/call1", "hello!");
            var result = "";

            try
            {
                h1.Start();
                h2.Start();
                Thread.Sleep(100);
                result = new HttpClient().GetString("http://127.0.0.1:14990/call1");
            }
            finally
            {
                h1.Stop();
                h2.Stop();
            }
            Assert.AreEqual("hello!", result);
        }
Exemplo n.º 6
0
        public void CanProxiseByAppid()
        {
            var aconfig1 = new HostConfig();
            aconfig1.AddQorpentBinding(98);
            var aconfig2 = new HostConfig();
            aconfig2.AddQorpentBinding(99);
            aconfig2.Proxize["/call1"] = "appid=98";
            var h1 = new HostServer(aconfig1);
            var h2 = new HostServer(aconfig2);
            h1.On("/call1", "hello!");
            var result = "";
            try
            {
                h1.Start();
                h2.Start(); 
                Thread.Sleep(100);
                result = new HttpClient().GetString("http://127.0.0.1:14990/call1");
            }
            finally
            {
                h1.Stop();
                h2.Stop();

            }
            Assert.AreEqual("hello!", result);
        }
Exemplo n.º 7
0
        /*Quand on clique sur server, un serveur est créé et le constructeur correspondant
         * est appelé dans MainPage*/
        private async void ServerButton_Clicked(object sender, EventArgs e)
        {
            HostServer server  = new HostServer(Width, Height);
            Thread     sThread = new Thread(server.StartListening);

            sThread.Start();
            await Navigation.PushAsync(new MainPage(server, "127.0.0.1"));
        }
Exemplo n.º 8
0
        public void UpdateConnection(HostServer host)
        {
            if (!_hostConnections.TryGetValue(host.Host.HostId, out var runner))
            {
                return;
            }

            runner.EndpointProvider.HostUri = new Uri(host.Host.Endpoint);
        }
Exemplo n.º 9
0
        private string GetPassword(HostServer server)
        {
            var servers = _config.GetSection("Servers");
            var entry   = servers.GetSection(server.Address);

            if (entry == null)
            {
                throw new ArgumentOutOfRangeException();
            }
            return(entry.Value);
        }
        public async Task <IActionResult> Create([Bind("HostServerID,Name,Address,SshUserName")] HostServer hostServer)
        {
            if (ModelState.IsValid)
            {
                _context.Add(hostServer);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(hostServer));
        }
 //Constructeur appelé quand on demande à être hôte
 public MainPage(HostServer server, string ip)
 {
     hostServer     = server;
     BindingContext = this;
     IpAddress      = new WebClient().DownloadString("http://icanhazip.com");
     IpAddress      = String.Format("Whiteboard IP: {0}", IpAddress);
     InitializeComponent();
     UpdateUIEventHandler.OnUpdateUI += UpdateUi;
     asyncClient = new AsyncClient(ip);
     asyncClient.StartClient();
 }
Exemplo n.º 12
0
 public void Setup()
 {
     host = new HostServer(14910);
     host.Initialize();
     host.Container.Get <IMvcFactory>().Register(typeof(ApiExecuteAction));
     host.Container.Register(host.Container.NewComponent <IApi, Api>(Lifestyle.Pooled));
     host.Factory.Register("/apir/execute", new ApiRequestHandler());
     host.Start();
     Thread.Sleep(100);
     cli = new HttpClient();
 }
Exemplo n.º 13
0
 public void CreateConnection(HostServer host)
 {
     _hostConnections.Add(
         host.Host.HostId,
         new EndpointConnectionRunner(
             host,
             host.ConnectionManager,
             _logger,
             _eventBus,
             _loggerFactory));
 }
Exemplo n.º 14
0
        protected override void Dispose(bool disposing)
        {
            lock (_connectionsSync)
            {
                if (HostServer != null)
                {
                    HostServer.Dispose();
                    HostServer = null;
                }
            }

            base.Dispose(disposing);
        }
Exemplo n.º 15
0
        public void ZeroDataHttpClientFail_BUG_Q540()
        {
            var h = new HostServer(8091);

            h.Factory.Register("/test", new zero_data());
            try {
                h.Start();
                Assert.AreEqual("", new HttpClient().GetString("http://127.0.0.1:8091/test"));
            }
            finally {
                h.Stop();
            }
        }
Exemplo n.º 16
0
 public EndpointConnectionRunner(
     HostServer host,
     EndpointConnectionManager connectionManager,
     ILogger <ConnectionManager> logger,
     EventBus eventBus,
     ILoggerFactory loggerFactory)
 {
     HostServer         = host;
     _connectionManager = connectionManager;
     _logger            = logger;
     _eventBus          = eventBus;
     _loggerFactory     = loggerFactory;
     EndpointProvider   = new HostServerEndpointProvider(new Uri(Host.Endpoint));
 }
Exemplo n.º 17
0
        private static List <ProcessInfo> GetRunningProcesses(SshClient client, HostServer server)
        {
            var top = client.RunCommand("/usr/bin/top -n 1 -b -w 200");

            return(top.Result.Split("\n").Skip(7).Select(l => Space.Split(l.Trim())).Where(items => items.Length == 12).Select(items => new ProcessInfo()
            {
                Pid = int.Parse(items[0], CultureInfo.InvariantCulture),
                User = items[1],
                Cpu = decimal.Parse(items[8], CultureInfo.InvariantCulture),
                Mem = decimal.Parse(items[9], CultureInfo.InvariantCulture),
                Cmd = items[11],
                Server = server
            }).ToList());
        }
Exemplo n.º 18
0
        protected override async ValueTask DisposeAsync(bool disposing)
        {
            await ConnectionsLock.TryLockAsync(
                async() =>
            {
                if (HostServer != null)
                {
                    await HostServer.DisposeAsync();
                    HostServer = null;
                }
            },
                5000,
                true);

            await base.DisposeAsync(disposing);
        }
Exemplo n.º 19
0
        public void FixtureSetup()
        {
            var hostConfig = new HostConfig();

            hostConfig.Bindings.Add(new HostBinding {
                Port = 50651, Schema = HostSchema.Http, Interface = "127.0.0.1"
            });
            hostConfig.Bindings.Add(new HostBinding {
                Port = 50652, Schema = HostSchema.Https, Interface = "127.0.0.1"
            });
            host = new HostServer(hostConfig);
            host.On("/x.html", _html, "text/hmtl");
            host.On("/x2.html", _html2, "text/hmtl");
            host.Start();
            httpend  = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 50651);
            httpsend = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 50652);
        }
Exemplo n.º 20
0
        public void CanRunSingle()
        {
            var hs = new HostServer(14910);

            hs.Initialize();
            var mvc = (MvcFactory)hs.Container.Get <IMvcFactory>();

            mvc.Register(typeof(TestAction).Assembly);
            var result = hs.Call("/test/best");

            Console.WriteLine(result);
            Assert.AreEqual("0", result);
            Assert.AreEqual(1, mvc.GetMetric("action.pool.count"));
            result = hs.Call("/test/best");
            Assert.AreEqual("1", result);
            Assert.AreEqual(1, TestAction.creates);
            Assert.AreEqual(1, mvc.GetMetric("action.pool.count"));
        }
Exemplo n.º 21
0
 public void Setup() {
     this.host = new HostServer(14990);
     host.OnBeforeInitializeServices += c => {
         c.Register(c.NewComponent<IHostLogon,TestHostLogon>());
     };
     host.Initialize();
     auth = host.Auth as DefaultHostAuthenticationProvider;
     Assert.NotNull(auth);
     Assert.NotNull(auth.HostLogonProvider);
     lp = auth.HostLogonProvider as DefaultHostLogonProvider;
     ls = auth.LoginSourceProvider as DefaultLoginSourceProvider;
     ls.Sources = new[] {new TestLoginSource()};
     Assert.True(lp.HostLogons.OfType<TestHostLogon>().Any()); //this code is just tests that Auth uses logons from IoC
     lp.HostLogons = new[] {new TestHostLogon()}; //we require just one logon extension
     this.cl = new HttpClient();
     host.Start();
     Thread.Sleep(200);
 }
Exemplo n.º 22
0
        public Server(HostEndPoint endPoint)
        {
            // TODO: remove this from here.
            FloodNetwork.NetworkInitialize();

            var server = new HostServer();

            host = server;

            var details = new HostConnectionDetails()
            {
                Address      = endPoint.Address,
                Port         = endPoint.Port,
                ChannelCount = ChannelCount
            };

            server.SessionPacket += OnPacket;
            server.CreateSocket(details);
        }
Exemplo n.º 23
0
        public void CanProxisePost()
        {
            var aconfig1 = new HostConfig();

            aconfig1.AddQorpentBinding(98);
            var aconfig2 = new HostConfig();

            aconfig2.AddQorpentBinding(99);
            aconfig2.Proxize["/call1"] = "appid=98";
            var h1 = new HostServer(aconfig1);
            var h2 = new HostServer(aconfig2);

            h1.OnContext("/call1", _ => {
                if (_.Method == "POST")
                {
                    _.Finish(new StreamReader(_.Request.Stream).ReadToEnd());
                }
                else
                {
                    _.Finish("hello!");
                }
            });
            var result       = "";
            var resultDirect = "";

            try
            {
                h1.Start();
                h2.Start();
                Thread.Sleep(1000);
                resultDirect = new HttpClient().GetString("http://127.0.0.1:14980/call1", "hello2");
                result       = new HttpClient().GetString("http://127.0.0.1:14990/call1", "hello2");
            }
            finally
            {
                h1.Stop();
                h2.Stop();
            }
            Console.WriteLine(result);

            Assert.AreEqual("hello2", resultDirect);
            Assert.AreEqual("hello2", result);
        }
Exemplo n.º 24
0
 public void Setup()
 {
     this.host = new HostServer(14990);
     host.OnBeforeInitializeServices += c => {
         c.Register(c.NewComponent <IHostLogon, TestHostLogon>());
     };
     host.Initialize();
     auth = host.Auth as DefaultHostAuthenticationProvider;
     Assert.NotNull(auth);
     Assert.NotNull(auth.HostLogonProvider);
     lp         = auth.HostLogonProvider as DefaultHostLogonProvider;
     ls         = auth.LoginSourceProvider as DefaultLoginSourceProvider;
     ls.Sources = new[] { new TestLoginSource() };
     Assert.True(lp.HostLogons.OfType <TestHostLogon>().Any()); //this code is just tests that Auth uses logons from IoC
     lp.HostLogons = new[] { new TestHostLogon() };             //we require just one logon extension
     this.cl       = new HttpClient();
     host.Start();
     Thread.Sleep(200);
 }
Exemplo n.º 25
0
        public static void Start()
        {
            RuntimeTypeModel.Default.Add(typeof(Msg), false).SetSurrogate(typeof(MsgSurrogate));

            Application.EnableVisualStyles();

            noti_Init();

            log  = new Log();
            host = new HostServer(log);

            host.OnClient += (even, client_id, msg_id) =>
            {
                switch (even)
                {
                case MsgConnectEvent.MESSAGE_BINARY:
                    //Msg m = msg.Get(msg_id);
                    break;
                }
            };

            log.OnChange += (system, type, text) => fm_log.ShowLog(system, type, text);


            //////////////////////////////////////////////

            icon_tray = new SystemTray("Host");
            fm_noti   = new FormNotification();
            fm_log    = new FormLogger();
            //fm_demo = new FormDemo(host);


            host.Start();

            fm_log.Show();
            //fm_demo.Show();

            log.Write(LogSystem.HOST_SYSTEM, LogType.NONE, string.Format("Host port public: {0}", host.Port));
            log.Write(LogSystem.HOST_SYSTEM, LogType.NONE, string.Format("Host port HTTP: {0}", host.PortHTTP));
            log.Write(LogSystem.HOST_SYSTEM, LogType.NONE, string.Format("Host port Websocket: {0}", host.PortWebSocket));

            Application.Run(icon_tray);
        }
Exemplo n.º 26
0
        public Server(RemotingManager remotingManager, HostEndPoint endPoint)
            : base(remotingManager)
        {
            // TODO: remove this from here
            //Flood.Network.NetworkInitialize();

            var server = new HostServer();
            host = server;

            var details = new HostConnectionDetails()
            {
                Address = endPoint.Address,
                Port = endPoint.Port,
                ChannelCount = ChannelCount
            };

            server.SessionPacket += OnPacket;
            server.CreateSocket(details);
        }
Exemplo n.º 27
0
        public async Task <bool> Login(string code, string sessionState)
        {
            if (Identity != null)
            {
                return(false);
            }
            IdentityData id = await HostServer.Login(http, code);

            if (id == null)
            {
                return(false);
            }
            else
            {
                Identity       = id;
                Identity.State = sessionState;
                base.NotifyAuthenticationStateChanged(GetAuthenticationStateAsync());
                return(true);
            }
        }
Exemplo n.º 28
0
        internal List <ProcessInfo> GetRunningProcesses(HostServer server)
        {
            List <ProcessInfo> processes;

            try
            {
                using (var client = GetClient(server))
                {
                    client.ConnectionInfo.Timeout = TimeSpan.FromMilliseconds(1000);
                    client.Connect();
                    processes = GetRunningProcesses(client, server);
                    client.Disconnect();
                }
            }
            catch (SshOperationTimeoutException)
            {
                processes = new List <ProcessInfo>();
            }
            return(processes);
        }
Exemplo n.º 29
0
        public void CanProxisePost()
        {
            var aconfig1 = new HostConfig();
            aconfig1.AddQorpentBinding(98);
            var aconfig2 = new HostConfig();
            aconfig2.AddQorpentBinding(99);
            aconfig2.Proxize["/call1"] = "appid=98";
            var h1 = new HostServer(aconfig1);
            var h2 = new HostServer(aconfig2);
            h1.OnContext("/call1", _ => {
                if (_.Method == "POST") {
                    _.Finish(new StreamReader(_.Request.Stream).ReadToEnd());
                }
                else {
                    _.Finish("hello!");    
                }
                
            });
            var result = "";
            var resultDirect = "";

            try
            {
                h1.Start();
                h2.Start();
                Thread.Sleep(1000);
                resultDirect = new HttpClient().GetString("http://127.0.0.1:14980/call1", "hello2");
                result = new HttpClient().GetString("http://127.0.0.1:14990/call1", "hello2");
            }
            finally
            {
                h1.Stop();
                h2.Stop();

            }
            Console.WriteLine(result);

            Assert.AreEqual("hello2", resultDirect);
            Assert.AreEqual("hello2", result);
        }
Exemplo n.º 30
0
        private static int Execute(ServerParameters arg)
        {
            var config = arg.BuildServerConfig();

            EnsureRequiredApplications(arg, config);
            config.DllFolder = EnvironmentInfo.ResolvePath("@repos@/.build/bin/all");
            var command = arg.Get("command", "");

            if (string.IsNullOrWhiteSpace(command))
            {
                Console.WriteLine("LOGLEVEL " + config.LogLevel);
            }
            var hostServer = new HostServer(config);

            hostServer.Initialize();
            var consoleContext = new ConsoleContext
            {
                Container  = hostServer.Container,
                Parameters = arg
            };
            var listener = new ConsoleListener(consoleContext);

            if (!string.IsNullOrWhiteSpace(command))
            {
                var task = listener.Call(command);
                task.Wait();
            }
            else
            {
                LogHostInfo(arg, config);
                hostServer.Start();
                Console.WriteLine("LOGLEVEL " + config.LogLevel);

                listener.Log = hostServer.Container.Get <ILoggyManager>().Get("console");
                listener.Run();
                hostServer.Stop();
            }
            return(0);
        }
Exemplo n.º 31
0
        public void HttpCacheTest()
        {
            var conf = new HostConfig();

            conf.AddQorpentBinding(99);
            conf.StaticContentMap["/files/"] = new StaticFolderDescriptor {
                Path = web
            };
            var qh = new HostServer(conf);

            qh.Start();
            try {
                Thread.Sleep(200);
                Assert.AreEqual("41", new HttpClient().GetString("http://127.0.0.1:14990/files/a.txt"));
                cache.Sources.Add(new FileCacheSource("http://127.0.0.1:14990/files/"));
                CheckFile("b/e/j.txt", 48);
                Assert.Null(cache.Resolve("b/e/k.txt")); //check that 404 doesn't cause error
            }
            finally {
                qh.Stop();
            }
        }
Exemplo n.º 32
0
        public void Head_Method_Support_BUG_Q541()
        {
            var h = new HostServer(8091);

            h.Factory.Register("/test", new no_zero_data());
            try
            {
                h.Start();
                var req = new HttpRequest
                {
                    Uri    = new Uri("http://127.0.0.1:8091/test"),
                    Method = "GET"
                };
                Assert.AreEqual("It's not zero", new HttpClient().Call(req).StringData);
                req.Method = "HEAD";
                Assert.AreEqual("", new HttpClient().Call(req).StringData);
            }
            finally
            {
                h.Stop();
            }
        }
Exemplo n.º 33
0
        public void CanReadCacheConfigFromBSharp()
        {
            var xml  = BSharpCompiler.Compile(ProductionCode)["tiles"].Compiled;
            var conf = new HostConfig(xml);

            Assert.AreEqual(1, conf.StaticContentCacheMap.Count);
            var qh = new HostServer(conf);

            Assert.NotNull(qh.Factory);//force initialize (HACK)
            var stats = (HostServerStaticResolver)qh.Static;

            Assert.AreEqual(1, stats.Caches.Count);
            var resolver = stats.Caches["/map/"];

            Assert.NotNull(resolver);
            Assert.AreEqual(EnvironmentInfo.ResolvePath(" %TEMP%/HostIntegrationTest"), resolver.Root);
            Assert.AreEqual(3, resolver.Sources.Count);
            var src = resolver.Sources[0];

            Assert.True(src.IsMaster);
            Assert.AreEqual("http://144.76.82.130:14060/map/", src.Root);
            Assert.AreEqual("notfound.png", resolver.Fallback);
        }
Exemplo n.º 34
0
 internal SftpClient GetSftpClient(HostServer server)
 {
     return(new SftpClient(server.Address, server.SshUserName, GetPassword(server)));
 }
Exemplo n.º 35
0
 public void FixtureSetUp()
 {
     this.srv = new HostServer(8094);
     srv.Start();
 }
Exemplo n.º 36
0
		public void FixtureSetUp()
		{
			this.srv = new HostServer(8094);
			srv.Start();
		}
Exemplo n.º 37
0
        public void TestPeerConnection()
        {
            Flood.Network.NetworkInitialize();

            var conn = new HostConnectionDetails {Address = "", Port = 13131};

            var hostServer = new HostServer();
            var hostClient = new HostClient();

            hostServer.CreateSocket(conn);
            hostClient.Connect(conn);

            //Test Connections
            {
                //bool clientConnected = false;
                //bool serverConnected = false;
                //hostClient.PeerConnect += peer => clientConnected = true;
                //hostServer.PeerConnect += peer => serverConnected = true;

                var watch = Stopwatch.StartNew();
                while (watch.ElapsedMilliseconds < 20)
                {
                    hostClient.ProcessEvents(1);
                    hostServer.ProcessEvents(1);
                }

                //Assert.IsTrue(clientConnected);
                //Assert.IsTrue(serverConnected);
            }

            //Test QueuePacket
            {
                const ushort packetId = 13;
                const string packetString = "message";

                var packetReceived = false;
                var packetReceivedId = -1;
                var packetReceiveString = "";

                hostServer.SessionPacket += (session, packet, channel) =>
                                           {
                                               packetReceived = true;
                                               packetReceivedId = packet.Id;
                                               var bytes = packet.Read();
                                               packetReceiveString = Encoding.UTF8.GetString(bytes.ToArray(),0,bytes.Count);
                                           };

                var p = new Packet(packetId);
                p.Write(new List<byte>(Encoding.ASCII.GetBytes(packetString)));

                hostClient.Peer.QueuePacket(p, 0);

                var watch = Stopwatch.StartNew();
                while (watch.ElapsedMilliseconds < 20)
                {
                    hostClient.ProcessEvents(1);
                    hostServer.ProcessEvents(1);
                }

                Assert.IsTrue(packetReceived);
                Assert.AreEqual(packetId,packetReceivedId);
                Assert.AreEqual(packetString,packetReceiveString);
            }

            //Test Encrypted Packet
            {
                const ushort packetId = 13;
                const string packetString = "message";

                var packetReceived = false;
                var packetReceivedId = -1;
                var packetReceiveString = "";

                hostServer.SessionPacket += (session, packet, channel) =>
                                           {
                                               packetReceived = true;
                                               packetReceivedId = packet.Id;
                                               var bytes = packet.Read();
                                               packetReceiveString = Encoding.UTF8.GetString(bytes.ToArray(),0,bytes.Count);
                                           };

                var p = new Packet(packetId) {Flags = PacketFlags.Encrypted};
                p.Write(new List<byte>(Encoding.ASCII.GetBytes(packetString)));

                hostClient.Peer.QueuePacket(p, 0);

                var watch = Stopwatch.StartNew();
                while (watch.ElapsedMilliseconds < 20)
                {
                    hostClient.ProcessEvents(1);
                    hostServer.ProcessEvents(1);
                }

                Assert.IsTrue(packetReceived);
                Assert.AreEqual(packetId,packetReceivedId);
                Assert.AreEqual(packetString,packetReceiveString);
            }
        }