Пример #1
0
        public static void ReadBuffer(byte[] buffer)
        {
            int       pos         = 0;
            int       parsedBytes = 0;
            RCPackage currPackage = null;

            while (true)
            {
                pos        += parsedBytes;
                currPackage = RCPackage.Parse(buffer, pos, 4, out parsedBytes);
                if (currPackage != null)
                {
                    while (!currPackage.IsCommitted)
                    {
                        pos += parsedBytes;
                        if (!currPackage.ContinueParse(buffer, pos, 4, out parsedBytes))
                        {
                            TraceManager.WriteAllTrace("Syntax error", TraceManager.GetTraceFilterID("RC.NetworkingSystem.TestConsole.Info"));
                            return;
                        }
                    }
                    TraceManager.WriteAllTrace("Package arrived", TraceManager.GetTraceFilterID("RC.NetworkingSystem.TestConsole.Info"));
                }
                else
                {
                    TraceManager.WriteAllTrace("Syntax error", TraceManager.GetTraceFilterID("RC.NetworkingSystem.TestConsole.Info"));
                    return;
                }
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            ConfigurationManager.Initialize("../../../../config/RC.NetworkingSystem.TestConsole/RC.NetworkingSystem.TestConsole.root");

            RCPackageFormat f0 = new RCPackageFormat();
            RCPackageFormat f1 = new RCPackageFormat();
            RCPackageFormat f2 = new RCPackageFormat();

            f0.DefineField(RCPackageFieldType.SHORT);
            f0.DefineField(RCPackageFieldType.SHORT_ARRAY);
            f0.DefineField(RCPackageFieldType.STRING_ARRAY);
            f0.DefineField(RCPackageFieldType.STRING);
            f0.DefineField(RCPackageFieldType.INT);
            f0.DefineField(RCPackageFieldType.INT_ARRAY);

            f1.DefineField(RCPackageFieldType.LONG);
            f1.DefineField(RCPackageFieldType.LONG_ARRAY);
            f1.DefineField(RCPackageFieldType.BYTE_ARRAY);
            f1.DefineField(RCPackageFieldType.BYTE);
            f1.DefineField(RCPackageFieldType.STRING);

            f2.DefineField(RCPackageFieldType.BYTE);
            f2.DefineField(RCPackageFieldType.BYTE_ARRAY);
            f2.DefineField(RCPackageFieldType.LONG_ARRAY);
            f2.DefineField(RCPackageFieldType.LONG);
            f2.DefineField(RCPackageFieldType.INT);
            f2.DefineField(RCPackageFieldType.STRING_ARRAY);

            RCPackageFormat.RegisterFormat(f0, 65000);
            RCPackageFormat.RegisterFormat(f1, 65001);
            RCPackageFormat.RegisterFormat(f2, 65002);

            /// WRITING
            TextWriter writer = new StreamWriter("write.txt");

            byte[] buffer = new byte[10000000];
            int    pos    = 0;

            for (int i = 0; i < 10000; i++)
            {
                RCPackage newPackage = GenerateRandomPackage();
                TraceManager.WriteAllTrace(string.Format("{0}: {1}", i, newPackage.ToString()), TraceManager.GetTraceFilterID("RC.NetworkingSystem.TestConsole.Info"));
                writer.WriteLine(i + ": " + newPackage.ToString());
                pos += newPackage.WritePackageToBuffer(buffer, pos);
            }
            writer.Close();
            /// WRITING BINARY DATA0
            FileStream binStr = new FileStream("bin0.txt", FileMode.Create);

            binStr.Write(buffer, 0, pos);
            binStr.Close();

            /// READING
            pos = 0;
            int       parsedBytes = 0;
            RCPackage currPackage = null;
            int       count       = 0;

            writer = new StreamWriter("read.txt");
            byte[] buffer2 = new byte[10000000];
            int    pos2    = 0;

            while (true)
            {
                int burst = rnd.Next(1, 50);
                pos        += parsedBytes;
                currPackage = RCPackage.Parse(buffer, pos, burst, out parsedBytes);
                if (currPackage != null)
                {
                    bool error = false;
                    while (!currPackage.IsCommitted)
                    {
                        pos  += parsedBytes;
                        burst = rnd.Next(1, 50);
                        if (!currPackage.ContinueParse(buffer, pos, burst, out parsedBytes))
                        {
                            TraceManager.WriteAllTrace("Syntax error", TraceManager.GetTraceFilterID("RC.NetworkingSystem.TestConsole.Info"));
                            writer.WriteLine("Syntax error");
                            error = true;
                        }
                    }
                    if (!error)
                    {
                        TraceManager.WriteAllTrace(string.Format("{0}: {1}", count, currPackage.ToString()), TraceManager.GetTraceFilterID("RC.NetworkingSystem.TestConsole.Info"));
                        writer.WriteLine(count + ": " + currPackage.ToString());
                        pos2 += currPackage.WritePackageToBuffer(buffer2, pos2);
                        count++;
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    TraceManager.WriteAllTrace("Syntax error", TraceManager.GetTraceFilterID("RC.NetworkingSystem.TestConsole.Info"));
                    writer.WriteLine("Syntax error");
                    break;
                }
            }
            writer.Close();

            /// WRITING BINARY DATA1
            binStr = new FileStream("bin1.txt", FileMode.Create);
            binStr.Write(buffer2, 0, pos2);
            binStr.Close();

            TraceManager.WriteAllTrace("READY", TraceManager.GetTraceFilterID("RC.NetworkingSystem.TestConsole.Info"));
            Console.ReadLine();
        }