/// <summary>
        /// Starting the server channel, In this method we waited for new
        /// clients and accept them in a new thread
        /// </summary>
        public void Start()
        {
            IPEndPoint ep = new IPEndPoint(IPAddress.Parse(_ip), _port);

            this._listener = new TcpListener(ep);

            this._listener.Start();

            Task task = new Task(() =>
            {
                while (_running)
                {
                    try
                    {
                        TcpClient client        = this._listener.AcceptTcpClient();
                        ClientHandler newclient = new ClientHandler(client);
                        newclient.Start();
                        Clients.Add(newclient); // add new clientHandler to the list
                        System.Threading.Thread.Sleep(500);
                        // invoke this event in order to get logs and settings
                        NewHandler?.Invoke(this, new NewClientEventArgs(client));
                    }
                    catch (SocketException e)
                    {
                        Console.WriteLine(e.Message);
                        Close();
                    }
                }
            });

            task.Start();
        }
Example #2
0
        public static int Run(string[] args)
        {
            if (args.Length == 0 || args.Length == 1)
            {
                return(ErrorHandler.printHelpInfo());
            }
            else
            {
                switch (args[1])
                {
                case "new":
                    return(NewHandler.PrintHelpMenu());

                case "list":
                    return(ListHandler.PrintHelpMenu());

                case "update":
                    return(UpdateHandler.PrintHelpMenu());

                case "delete":
                    return(DeleteHandler.PrintHelpMenu());

                case "launch":
                    return(LaunchHandler.PrintHelpMenu());

                default:
                    return(ErrorHandler.printHelpInfo());
                }
            }
        }
Example #3
0
        public unsafe void ShouldParse(string json)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(json);
            fixed(byte *p = bytes)
            {
                var pctx = new ParseContext(p, bytes.Length);
                var stub = new AccountStub();

                Assert.That(NewHandler.TryParseAccount(ref pctx, stub), Is.EqualTo(201));
            }
        }
Example #4
0
        public unsafe void Should_parse_json()
        {
            var body = new
            {
                id     = 123,
                email  = "*****@*****.**",
                status = @"\u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u043e",
                sex    = "m",
                fname  = "Jury",
                sname  = "Soldatenkov",

                interests = new[] { "sex", "drugs", "rock'n'roll" },

                likes = new object[]
                {
                    new { id = 245, ts = 123533214 },
                    new { id = 123, ts = 123532514 },
                },
                premium = new
                {
                    start  = 1000,
                    finish = 2000
                }
            };
            var stringBody = JsonConvert.SerializeObject(body);

            byte[] bytes = Encoding.UTF8.GetBytes(stringBody);

            fixed(byte *p = &bytes[0])
            {
                ParseContext pctx = new ParseContext(p, bytes.Length);

                byte[] idBytes = Encoding.UTF8.GetBytes("123");
                Console.WriteLine(stringBody);
                Console.WriteLine((byte)',');
                Console.WriteLine(string.Join(" ", bytes));
                Console.WriteLine(string.Join(" ", idBytes));

                var account = new AccountStub();
                var result  = NewHandler.TryParseAccount(ref pctx, account);

                Assert.That(result, Is.EqualTo(201));
                Assert.That(account.id, Is.EqualTo(body.id));
                Assert.That(account.email, Is.EqualTo(body.email));
                Assert.That(account.sexStatus.IsMale(), Is.True);
                //Assert.That(account.fname, Is.EqualTo(body.fname));
                Assert.That(account.sname, Is.EqualTo(body.sname));

                //CollectionAssert.AreEquivalent(account.interests, body.interests);
                Assert.That(account.likes.Count, Is.EqualTo(body.likes.Length));
                Assert.That(account.premium.start, Is.EqualTo(body.premium.start));
                Assert.That(account.premium.finish, Is.EqualTo(body.premium.finish));
            }
        }