/// <see cref="DssEventHandler.PackageArrivedDuringSetupStage_i"/>
        protected override void PackageArrivedDuringSetupStage_i(RCPackage package, int senderID)
        {
            /// If the sender of the package is the host --> error
            if (senderID == 0)
            {
                this.root.Session.SetupStageError();
            }

            /// Otherwise we ignore the package
            TraceManager.WriteAllTrace(string.Format("WARNING! Package arrived from operator-{0} during setup stage: {1}. Package will be ignored!", senderID, package.ToString()), DssTraceFilters.SETUP_STAGE_ERROR);
        }
Example #2
0
 /// <summary>
 /// Called when a NETWORK_CUSTOM_PACKAGE has arrived from the lobby.
 /// </summary>
 /// <remarks>Must be implemented at both server and client side.</remarks>
 public virtual void PackageArrivedHdl(int timestamp, RCPackage package, int senderID)
 {
     if (IsSimulationRunning_i())
     {
         /// Package arrived during simulation stage must be handled.
         if (package.PackageFormat.ID == DssRoot.DSS_COMMAND)
         {
             if (!CommandPackageArrived(package, senderID))
             {
                 this.root.SimulationMgr.SimulationStageError(string.Format("Processing incoming DSS_COMMAND package failed. Sender: {0}. Package: {1}", senderID, package.ToString()),
                                                              new byte[] { });
             }
         }
         else if (package.PackageFormat.ID == DssRoot.DSS_COMMIT)
         {
             if (!this.root.SimulationMgr.RegisterCommit(package, senderID))
             {
                 this.root.SimulationMgr.SimulationStageError(string.Format("Processing incoming DSS_COMMIT package failed. Sender: {0}. Package: {1}", senderID, package.ToString()),
                                                              new byte[] { });
             }
         }
         else if (package.PackageFormat.ID == DssRoot.DSS_COMMIT_ANSWER)
         {
             if (!this.root.SimulationMgr.RegisterCommitAnswer(package, senderID))
             {
                 this.root.SimulationMgr.SimulationStageError(string.Format("Processing incoming DSS_COMMIT_ANSWER package failed. Sender: {0}. Package: {1}", senderID, package.ToString()),
                                                              new byte[] { });
             }
         }
         else if (package.PackageFormat.ID == DssRoot.DSS_LEAVE)
         {
             if (this.root.SimulationMgr.RegisterLeaveMessage(package, senderID))
             {
                 this.root.OperatorLeftSimulationStage(senderID);
             }
             else
             {
                 this.root.SimulationMgr.SimulationStageError(string.Format("Processing incoming DSS_LEAVE package failed. Sender: {0}. Package: {1}", senderID, package.ToString()),
                                                              new byte[] { });
             }
         }
         else if (package.PackageFormat.ID == DssRoot.DSS_SIM_ERROR)
         {
             string errorDescr = package.ReadString(0);
             byte[] customData = package.ReadByteArray(1);
             this.root.SimulationMgr.SimulationStageErrorReceived(string.Format("DSS_SIM_ERROR received from operator-{0}: {1}", senderID, errorDescr), customData);
         }
         else
         {
             this.root.SimulationMgr.SimulationStageError(string.Format("Unexpected package arrived from operator-{0}: {1}", senderID, package.ToString()),
                                                          new byte[] { });
         }
     }
     else
     {
         /// Package arrived during setup stage is not allowed.
         PackageArrivedDuringSetupStage_i(package, senderID);
     }
 }
 /// <see cref="LobbyConnection.SendPackage_i"/>
 protected override bool SendPackage_i(RCPackage packageToSend)
 {
     TraceManager.WriteAllTrace(string.Format("SendPackage: {0} local-{1} remote-{2}", packageToSend.ToString(), this.connection.Client.LocalEndPoint.ToString(), this.connection.Client.RemoteEndPoint.ToString()), NetworkingSystemTraceFilters.INFO);
     return(SendPackageToStream_i(packageToSend, this.stream));
 }
Example #4
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();
        }
Example #5
0
 public void HostCommand(RCPackage command)
 {
     TraceManager.WriteAllTrace(string.Format("SIMULATOR_CALL: Host command: {0}", command.ToString()), TestConsoleTraceFilters.TEST_INFO);
 }
Example #6
0
 public void GuestCommand(int guestIndex, RCPackage command)
 {
     TraceManager.WriteAllTrace(string.Format("SIMULATOR_CALL: Guest-{0} Command: {1}", guestIndex, command.ToString()), TestConsoleTraceFilters.TEST_INFO);
 }