Пример #1
0
        private void SocketHandler()
        {
            NetMessage      m = new NetMessage();
            SimulationEvent e = null;

            while (true)
            {
                try
                {
                    m.Receive(ref netStream);
                    switch (m.type)
                    {
                    case NetMessageType.EVENT:
                        try
                        {
                            e = SimulationEventFactory.XMLDeserialize(m.msg);
                            lock (eventQueueLock)
                            {
                                eventQueue.Add(e);
                            }
                        }
                        catch (Exception exc)
                        {
                            ErrorLog.Write(String.Format("NONFATAL Deserialize Error in NetworkClient: {0}", m.msg));
                            ErrorLog.Write(exc.ToString());
                        }
                        break;

                    case NetMessageType.DISCONNECT:
                        System.Console.WriteLine("NetworkClient: recieved Shutdown message from server.  Disconnecting...");
                        Disconnect();
                        return;

                    case NetMessageType.PING:
                        break;

                    case NetMessageType.NONE:

                        System.Console.WriteLine("NetworkClient: Message with no type received.  Disconnecting.");
                        Disconnect();
                        return;

                    default:
                        throw new Exception("NetworkClient: recieved unhandled message");
                    }
                }
                catch (System.IO.IOException)
                {
                    System.Console.WriteLine("NetworkClient: Lost connection with remote server!");
                    netStream.Close();
                    netStream.Dispose();
                    isConnected = false;
                    clientThread.Abort();
                    return;
                }
            }
        }
Пример #2
0
        List <SimulationEvent> LoadForkReplayFile(String filename)
        {
            List <SimulationEvent> events = new List <SimulationEvent>();

            if (filename == null)
            {
                return(events);
            }



            StreamReader    re    = File.OpenText(filename);
            string          input = null;
            SimulationEvent ev    = null;

            input = re.ReadLine(); // thriow away the line with the version number


            while ((input = re.ReadLine()) != null)
            {
                try
                {
                    ev = SimulationEventFactory.XMLDeserialize(input);
                    if (SimulationEventFactory.ValidateEvent(ref m_simModelInfo, ev))
                    {
                        if (m_simModelInfo.eventModel.events[ev.eventType].shouldForkReplay)
                        {
                            events.Add(ev);
                        }
                    }
                    else
                    {
                        throw new Exception("error reading: " + input);
                    }
                }
                catch (Exception e)
                {
                    ErrorLog.Write(String.Format("NONFATAL Deserialize Error in ForkReplayToQueues: {0}", input));
                    ErrorLog.Write(e.ToString());
                }
            }
            re.Close();

            return(events);
        }
Пример #3
0
 private void loadEventsButton_Click(object sender, EventArgs e)
 {
     if (ofd2.ShowDialog() == DialogResult.OK)
     {
         StreamReader    re    = File.OpenText(ofd2.FileName);
         string          input = null;
         SimulationEvent ev    = null;
         eventsListBox.Items.Clear();
         while ((input = re.ReadLine()) != null)
         {
             ev = SimulationEventFactory.XMLDeserialize(input);
             if (SimulationEventFactory.ValidateEvent(ref simModel, ev))
             {
                 eventsListBox.Items.Add(new EventListBoxItem(ev));
             }
             else
             {
                 MessageBox.Show("event file contains invalid event: \"" + input + "\"");
             }
         }
         re.Close();
     }
 }
Пример #4
0
        private void LoadEvents(string fileName)
        {
            StreamReader    re    = File.OpenText(fileName);
            string          input = null;
            SimulationEvent ev    = null;

            events.Clear();

            input = re.ReadLine(); // thriow away the line with the version number


            while ((input = re.ReadLine()) != null)
            {
                try
                {
                    ev = SimulationEventFactory.XMLDeserialize(input);
                    if (SimulationEventFactory.ValidateEvent(ref simModel, ev))
                    {
                        if (simModel.eventModel.events[ev.eventType].shouldReplay)
                        {
                            events.Add(ev);
                        }
                    }
                    else
                    {
                        throw new Exception("error reading: " + input);
                    }
                }
                catch (Exception e)
                {
                    ErrorLog.Write(String.Format("NONFATAL Deserialize Error in LogPlayer.Player: {0}", input));
                    ErrorLog.Write(e.ToString());
                }
            }
            re.Close();
        }
Пример #5
0
        private void ConnectionHandler()
        {
            NetMessage      m = new NetMessage();
            SimulationEvent e = null;

            while (true)
            {
                try
                {
                    m.Receive(ref netStream);
                    switch (m.type)
                    {
                    case NetMessageType.REGISTER:
                        eventDistClient = new SimulationEventDistributorClient();
                        networkServer.eventDist.RegisterClient(ref eventDistClient);
                        m_terminalID = m.TerminalID;
                        m.type       = NetMessageType.REGISTER_RESPONSE;
                        //m.clientID = networkServer.RegisterClient();
                        m.clientID = eventDistClient.id;
                        m.Send(ref netStream, m.TerminalID);
                        break;

                    case NetMessageType.SUBSCRIBE:
                        eventDistClient.Subscribe(m.msg);
                        break;

                    case NetMessageType.EVENT:
                        try
                        {
                            e = SimulationEventFactory.XMLDeserialize(m.msg);
                            eventDistClient.PutEvent(e);
                        }
                        catch (Exception exc)
                        {
                            ErrorLog.Write(String.Format("NONFATAL Deserialize Error in NetworkServer: {0}", m.msg));
                            ErrorLog.Write(exc.ToString());
                        }
                        //networkServer.EventFromClient(e);
                        break;

                    case NetMessageType.DISCONNECT:
                        //netStream.Close(0);
                        System.Console.WriteLine("NetworkServerConnectionHandler.ConnectionHandler:connection closed");
                        //netStream.Dispose();
                        //networkServer.RemoveClient(eventDistClient.id);
                        sendThread.Abort();
                        ForceClose();
                        return;

                    case NetMessageType.NONE:
                        ErrorLog.Write(String.Format("NONFATAL Deserialize Error in NetworkServer: {0}", m.msg));
                        ErrorLog.Write(String.Format("TYPE: {0}; MSG: {1};", m.type, m.msg));
                        break;

                    default:
                        throw new Exception("connection handler got an invalid event");
                    }
                }
                catch (System.IO.IOException exc)
                {
                    System.Console.WriteLine("NetworkServerConnectionHandler.ConnectionHandler:lost connection with client");
                    ForceClose();
                    return;
                }
                catch (System.ObjectDisposedException)
                {
                    return;
                }
                catch (ThreadAbortException)
                {
                    return;
                }
                catch (Exception exc)
                {
                    MessageBox.Show("An error has occured in the Simulation Server.\nPlease email the C:\\DDDErrorLog.txt file to Aptima customer support with a description of what you were doing at the time of the error.");
                    ErrorLog.Write(exc.ToString() + "\n");
                    throw new Exception();
                }
            }
        }