示例#1
0
        public void Decode_ABC_to_BCD_with_key_1()
        {
            /* Тестирование по 3-м ААА
             * А arrange
             * А act
             * А assert  */

            #region Arrange

            var str             = "BCD";
            var expected_result = "ABC";
            var key             = 1;

            #endregion

            #region Act

            var actual_result = StringEncoder.Decode(str, key);

            #endregion

            #region Assert

            Assert.AreEqual(expected_result, actual_result);

            #endregion
        }
示例#2
0
        static async Task RunServerAsync(int port)
        {
            var bossGroup   = new MultithreadEventLoopGroup(1);
            var workerGroup = new MultithreadEventLoopGroup();

            var stringEncoder = new StringEncoder();
            var stringDecoder = new StringDecoder();
            var serverHandler = new ServerHandler(GameCore);

            try
            {
                var bootstrap = new ServerBootstrap();
                bootstrap
                .Group(bossGroup, workerGroup)
                .Channel <TcpServerSocketChannel>()
                .Option(ChannelOption.SoBacklog, 100)
                .Handler(new LoggingHandler(LogLevel.INFO))
                .ChildHandler(new ActionChannelInitializer <ISocketChannel>(channel =>
                {
                    var pipeline = channel.Pipeline;

                    pipeline.AddLast(new DelimiterBasedFrameDecoder(8192, Delimiters.LineDelimiter()));
                    pipeline.AddLast(stringEncoder, stringDecoder, serverHandler);
                }));

                var bootstrapChannel = await bootstrap.BindAsync(port);

                GameCore.RunContainers();
                await bootstrapChannel.CloseAsync();
            }
            finally
            {
                Task.WaitAll(bossGroup.ShutdownGracefullyAsync(), workerGroup.ShutdownGracefullyAsync());
            }
        }
示例#3
0
        static async Task RunServerAsync()
        {
            var bossGroup   = new MultithreadEventLoopGroup(1);
            var workerGroup = new MultithreadEventLoopGroup();

            var STRING_ENCODER = new StringEncoder();
            var STRING_DECODER = new StringDecoder();
            var SERVER_HANDLER = new ChatServerHandler();

            try
            {
                var bootstrap = new ServerBootstrap();
                bootstrap
                .Group(bossGroup, workerGroup)
                .Channel <TcpServerSocketChannel>()
                .Option(ChannelOption.SoBacklog, 100)
                .Handler(new LoggingHandler(LogLevel.INFO))
                .ChildHandler(new ActionChannelInitializer <ISocketChannel>(channel =>
                {
                    IChannelPipeline pipeline = channel.Pipeline;
                    pipeline.AddLast(new DelimiterBasedFrameDecoder(8192, Delimiters.LineDelimiter()));
                    pipeline.AddLast(STRING_ENCODER, STRING_DECODER, SERVER_HANDLER);
                }));

                IChannel bootstrapChannel = await bootstrap.BindAsync(8080);

                Console.ReadLine();

                await bootstrapChannel.CloseAsync();
            }
            finally
            {
                Task.WaitAll(bossGroup.ShutdownGracefullyAsync(), workerGroup.ShutdownGracefullyAsync());
            }
        }
        public void send_message()
        {
            var slice   = new BufferSlice(new byte[65535], 0, 65535);
            var encoder = new StringEncoder();
            var decoder = new StringDecoder();

            var sut = CreateClientChannel(slice, encoder, decoder);

            sut.MessageReceived += (channel, message) =>
            {
            };
            var stream = new SslStream(new NetworkStream(_helper.Server));

            stream.BeginAuthenticateAsServer(_certificate, OnAuthenticated, stream);
            sut.Assign(_helper.Client);
            sut.Send("Hello world");

            //i do not know why this loop is required.
            //for some reason the send message is divided into two tcp packets
            //when using SslStream.
            var bytesReceived = 0;
            var buf           = new byte[65535];

            while (bytesReceived < 15)
            {
                bytesReceived += stream.Read(buf, bytesReceived, 15);
            }

            var actual = Encoding.ASCII.GetString(buf, 4, bytesReceived - 4); // string encoder have a length header.

            actual.Should().Be("Hello world");
        }
示例#5
0
        public bool Initialize()
        {
            Log?.Verbose(className, "Initialize", "Initializing Cxp Server Channel");

            channelHandler = CreateChannelHandler();
            if (channelHandler == null)
            {
                Log?.Information(className, "Initialize", "Failed to Initialize Cxp Server Channel");
                return(false);
            }


            bootstrap = new Bootstrap();
            group     = new MultithreadEventLoopGroup();
            encoder   = new StringEncoder();
            decoder   = new StringDecoder();

            bootstrap
            .Group(group)
            .Channel <TcpSocketChannel>()
            .Option(ChannelOption.TcpNodelay, true)
            .Handler(channelHandler);

            Log?.Information(className, "Initialize", "Cxp Server Channel Initialized");
            return(true);
        }
示例#6
0
        public void Encode_ABC_to_BCD_with_key_1()
        {
            // Принцип ААА
            // A - Arrange - ввод
            // A - Act - 1 действие
            // A - Assert - проверка

            #region Arrange

            var str             = "ABC";
            var expected_result = "BCD";
            var key             = 1;

            #endregion

            #region Act

            var actual_result = StringEncoder.Encode(str, key);

            #endregion

            #region Assert

            Assert.AreEqual(expected_result, actual_result);

            #endregion
        }
    public string DecodeString(string encodedString)
    {
        var encoder = new StringEncoder(this.EncodingFormat);

        Debug.WriteLine($"Decoding {encodedString}");
        return(encoder.DecodeString(encodedString));
    }
        public void Decode_BCD_to_ABC_with_key_1()
        {
            // Принцип ААА
            // A - Arrange
            // A - Act
            // A - Assert

            #region Arrange

            var str             = "BCD";
            var expected_result = "ABC";
            var key             = 1;

            #endregion



            #region Act

            var actual_result = StringEncoder.Decode(str, key);

            #endregion



            #region Assert

            Assert.AreEqual(expected_result, actual_result);

            #endregion
        }
    public static string ConvertToBase64(string original)
    {
        var bytes        = Encoding.ASCII.GetBytes(original);
        var base64String = StringEncoder.ConvertBytesToString(bytes, EncodingFormats.Base64);

        return(base64String);
    }
    public static string ConvertFromBase64(string base64)
    {
        var bytes       = StringEncoder.GetBytesFromString(base64, EncodingFormats.Base64);
        var asciiString = StringEncoder.ConvertBytesToString(bytes, EncodingFormats.ASCII);

        return(asciiString);
    }
示例#11
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: static byte[] encode(String charsetName, char[] ca, int off, int len) throws java.io.UnsupportedEncodingException
        internal static sbyte[] Encode(String charsetName, char[] ca, int off, int len)
        {
            StringEncoder se  = Deref(Encoder);
            String        csn = (charsetName == null) ? "ISO-8859-1" : charsetName;

            if ((se == null) || !(csn.Equals(se.RequestedCharsetName()) || csn.Equals(se.CharsetName())))
            {
                se = null;
                try
                {
                    Charset cs = LookupCharset(csn);
                    if (cs != null)
                    {
                        se = new StringEncoder(cs, csn);
                    }
                }
                catch (IllegalCharsetNameException)
                {
                }
                if (se == null)
                {
                    throw new UnsupportedEncodingException(csn);
                }
                Set(Encoder, se);
            }
            return(se.Encode(ca, off, len));
        }
示例#12
0
        public void Receive_one_message()
        {
            var slice1    = new BufferSlice(new byte[65535], 0, 65535);
            var encoder1  = new StringEncoder();
            var decoder1  = new StringDecoder();
            var expected  = "Hello".PadRight(5000);
            var outBuffer = new byte[expected.Length + 4];

            BitConverter2.GetBytes(expected.Length, outBuffer, 0);
            Encoding.UTF8.GetBytes(expected, 0, expected.Length, outBuffer, 4);
            object actual = null;
            var    evt    = new ManualResetEvent(false);
            var    stream = new SslStream(new NetworkStream(_helper.Server));

            stream.BeginAuthenticateAsServer(_certificate, OnAuthenticated, stream);

            var sut1 = CreateClientChannel(slice1, encoder1, decoder1);

            sut1.MessageReceived = (channel, message) =>
            {
                actual = message;
                evt.Set();
            };
            sut1.Assign(_helper.Client);
            evt.WaitOne(500); // wait on authentication
            evt.Reset();
            stream.Write(outBuffer);

            evt.WaitOne(500).Should().BeTrue();
            actual.Should().Be(expected);
        }
示例#13
0
 private void EncodeAll(String[] strings, String expectedEncoding)
 {
     foreach (String str in strings)
     {
         Assert.AreEqual(expectedEncoding, StringEncoder.Encode(str), "Problem with " + str);
     }
 }
示例#14
0
        public void Constructors()
        {
            // Test fixed length properties.
            StringMessageHeaderFormatter formatter = new StringMessageHeaderFormatter(
                new FixedLengthManager(12), StringEncoder.GetInstance(),
                SpacePaddingRight.GetInstance(false));

            Assert.IsTrue(formatter.LengthManager.MaximumLength == 12);
            Assert.IsTrue(formatter.Encoder == StringEncoder.GetInstance());
            Assert.IsTrue(formatter.Padding == SpacePaddingRight.GetInstance(false));

            // Test variable length properties without padding.
            formatter = new StringMessageHeaderFormatter(new VariableLengthManager(1, 800,
                                                                                   StringLengthEncoder.GetInstance(5)), StringEncoder.GetInstance());

            Assert.IsTrue(formatter.LengthManager.MaximumLength == 800);
            Assert.IsTrue(formatter.Encoder == StringEncoder.GetInstance());
            Assert.IsTrue(formatter.Padding == null);

            // Test variable length properties with padding.
            formatter = new StringMessageHeaderFormatter(new VariableLengthManager(1,
                                                                                   999, StringLengthEncoder.GetInstance(3)), StringEncoder.GetInstance(),
                                                         SpacePaddingRight.GetInstance(false));

            Assert.IsTrue(formatter.LengthManager.MaximumLength == 999);
            Assert.IsTrue(formatter.Encoder == StringEncoder.GetInstance());
            Assert.IsTrue(formatter.Padding == SpacePaddingRight.GetInstance(false));
        }
    public string EncodeString(string plainString, Certificate cert)
    {
        var encoder = new StringEncoder(this.EncodingFormat);

        Debug.WriteLine($"Encoding {plainString}");
        return(GetFormatCode(this.EncodingFormat) + ":" + encoder.EncodeString(plainString));
    }
示例#16
0
 public void SetUp()
 {
     _encoder = StringEncoder.GetInstance();
     Assert.IsNotNull(_encoder);
     _data       = "Sample data";
     _binaryData = Encoding.UTF7.GetBytes(_data);
 }
示例#17
0
 /// <summary>
 /// Send string data to the server
 /// </summary>
 /// <param name="data"></param>
 public void Send(string data)
 {
     if (string.IsNullOrEmpty(data))
     {
         return;
     }
     Send(StringEncoder.GetBytes(data));
 }
 public void Write(TcpClient client, string data)
 {
     if (data == null)
     {
         return;
     }
     Write(client, StringEncoder.GetBytes(data));
 }
示例#19
0
 public void Broadcast(string data, TcpClient client)
 {
     if (data == null)
     {
         return;
     }
     Broadcast(StringEncoder.GetBytes(data), client);
 }
示例#20
0
 public void Write(string data)
 {
     if (data == null)
     {
         return;
     }
     Write(StringEncoder.GetBytes(data));
 }
示例#21
0
 public void Broadcast(string data)
 {
     if (data == null)
     {
         return;
     }
     Broadcast(StringEncoder.GetBytes(data));
 }
示例#22
0
        public void Instantiation()
        {
            FieldFormatterEventArgs eventArgs = new FieldFormatterEventArgs(
                new StringFieldFormatter(11, new FixedLengthManager(6), StringEncoder.GetInstance()));

            Assert.IsNotNull(eventArgs.FieldFormatter);
            Assert.IsTrue(eventArgs.FieldFormatter.FieldNumber == 11);
        }
 //
 //Transform string to server message  --------- This is the method to call
 //                                                                  |
 public void SendDataToClient(string data, TcpClient client)             //
 {                                                                       //
     if (data == null)
     {
         return;
     }                                                              //
     SendDATA(StringEncoder.GetBytes(data), client);                //
 }                                                                  //
示例#24
0
        public void Pointers_To_Other_Words_Inside_Vocab_Data_Should_Be_Updated_When_Sorting()
        {
            const string SCode = @"
    .NEW 6

    ; 64 bytes for header
    .WORD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    .WORD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

    .VOCBEG 8,6

W?ZEBRA::
    .ZWORD ""zebra""
    .WORD W?HORSE
W?HORSE::
    .ZWORD ""horse""
    .WORD W?DONKEY
W?DONKEY::
    .ZWORD ""donkey""
    .WORD W?ZEBRA
W?MULE::
    .ZWORD ""mule""
    .WORD W?MULE

    .VOCEND
    .END";

            Assert.IsTrue(TestHelper.Assemble(SCode, out var mstr));

            var buffer = mstr.GetBuffer();

            /* After sorting:
             * donkey  firstEntry + entryLength*0   64  70
             * horse   firstEntry + entryLength*1   72  78
             * mule    firstEntry + entryLength*2   80  86
             * zebra   firstEntry + entryLength*3   88  94
             */
            const int firstEntryAddr = 64;
            const int entryLength    = 8;
            const int zwordLength    = 6;

            ushort donkeyAddr = firstEntryAddr + entryLength * 0;
            ushort horseAddr  = firstEntryAddr + entryLength * 1;
            ushort muleAddr   = firstEntryAddr + entryLength * 2;
            ushort zebraAddr  = firstEntryAddr + entryLength * 3;

            var encoder = new StringEncoder();

            AssertZword(buffer, encoder, zwordLength, donkeyAddr, "donkey");
            AssertZword(buffer, encoder, zwordLength, horseAddr, "horse");
            AssertZword(buffer, encoder, zwordLength, muleAddr, "mule");
            AssertZword(buffer, encoder, zwordLength, zebraAddr, "zebra");

            AssertWord(buffer, donkeyAddr + zwordLength, zebraAddr);
            AssertWord(buffer, horseAddr + zwordLength, donkeyAddr);
            AssertWord(buffer, muleAddr + zwordLength, muleAddr);
            AssertWord(buffer, zebraAddr + zwordLength, horseAddr);
        }
        public void Decode_BCD_to_ABC_with_key_1()
        {
            var str             = "BCD";
            var expected_result = "ABC";
            var key             = 1;
            var actual_result   = StringEncoder.Decode(str, key);

            Assert.AreEqual(expected_result, actual_result);
        }
示例#26
0
文件: Tag.cs 项目: tbossi/Tags
        public virtual void AddAttribute(string key, string value = null, StringEncoder encoder = null)
        {
            if (String.IsNullOrWhiteSpace(key))
            {
                throw new ArgumentException(ExceptionMessages.NotNullOrWhitespace("key"));
            }

            Attributes[key] = (encoder == null ? DefaultAttributeEncoder : encoder).Encode(value);
        }
示例#27
0
        public void ShouldEncodeEmptyStringsWithoutHuffmanEncoding()
        {
            var testStr = "";
            var bytes   = StringEncoder.Encode(testStr, HuffmanStrategy.Never);

            Assert.Equal(1, bytes.Length);

            // Compare the bytes
            Assert.Equal(0x00, bytes[0]);
        }
示例#28
0
        public void EncodeTest()
        {
            const string str          = "asd";
            const int    key          = 1;
            const string expected_str = "bte";

            var actual_str = StringEncoder.Encode(str, key);

            Assert.AreEqual(expected_str, actual_str);
        }
示例#29
0
        public void Encode_WhenNoValueIsPassed_ShouldReturnEmptyString()
        {
            //Arrange
            var sut = new StringEncoder();

            //Act
            var result = sut.Encode("");

            //Assert
            result.Should().BeNullOrEmpty();
        }
示例#30
0
        public void Write(string data)
        {
            if (data == null)
            {
                return;
            }
            var byteData = StringEncoder.GetBytes(data).ToList();

            byteData.Add(Delimiter);
            Write(byteData.ToArray());
        }
示例#31
0
        public static void Main(string[] args)
        {
            try
            {
                using (var server = new NetServer())
                {
                    server.Listen((self) =>
                    {
                        System.Console.WriteLine("Server is listening on: " + self.Address.ToString());
                    });
                    server.Connect((channel) =>
                    {
                        System.Console.WriteLine("Client connected.");

                        channel.Fault((c, exception) =>
                        {
                            System.Console.WriteLine(((MiniNet.Exceptions.SocketException)exception).StatusCode.ToString());
                            System.Console.WriteLine(exception.ToString());
                        });

                        var encoding = Encoding.Unicode;
                        var decoder = new StringDecoder(encoding);
                        var encoder = new StringEncoder(encoding);

                        //channel.Authenticate();
                        channel.Start();

                        channel.Message((self, buffer) =>
                        {
                            if (buffer.Size > 0)
                            {
                                var str = decoder.Process(buffer);
                                System.Console.WriteLine(str + "-" + buffer.Size + "-");
                                System.Console.WriteLine(buffer.DumpHex(int.MaxValue));
                            }
                        });

                        /*var payload = "Server: Hello Client";
                        var message = MiniNet.Buffers.Buffer.Create(encoding.GetByteCount(payload));

                        encoder.Process(message, payload);
                        channel.SendAsync(message);*/

                        Thread.Sleep(1000);
                        //channel.Close();
                    });
                    server.Fault((exception) =>
                    {
                        System.Console.WriteLine(exception.ToString());
                    });
                    server.Bind(8080, "localhost");

                    using (var client = new TcpClient())
                    {
                        client.NoDelay = true;
                        client.Connect(server.Address.Host, server.Address.Port);
                        Thread.Sleep(100);

                        var encoding = new UnicodeEncoding(false, false, true);
                        var stream = client.GetStream();
                        //var reader = new StreamReader(stream, encoding);
                        var writer = new StreamWriter(stream, encoding) { AutoFlush = true };

                        for (int i=1; i<=4; i++)
                        {
                            /*var bytesReceived = new byte[1024];
                            var lengthReceived = client.GetStream().Read(bytesReceived, 0, bytesReceived.Length);
                            if (lengthReceived > 0)
                            {
                                var message = encoding.GetString(bytesReceived, 0, lengthReceived);
                                System.Console.WriteLine(MiniNet.Buffers.Buffer.DumpHex(bytesReceived, 0, lengthReceived, int.MaxValue));
                                System.Console.WriteLine("'" + message + "'" + lengthReceived);
                            }*/

                            writer.Write("Client: Hello Server");
                        }

                        Thread.Sleep(100);
                        System.Console.WriteLine("Press ENTER to quit");
                        System.Console.ReadLine();
                        client.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.ToString());
                System.Console.WriteLine(ex.StackTrace);
            }
        }