Example #1
0
 //private static Thread textChatServerThread;
 //private static Thread handshakeManagerThread;
 /// <summary>
 ///
 /// </summary>
 /// <param name="scenarioFile"></param>
 /// <param name="schemaFile"></param>
 /// <param name="hostname"></param>
 /// <param name="portString"></param>
 /// <param name="simModelName"></param>
 /// <param name="contextControl"></param>
 /// <param name="updateIncr"></param>
 /// <param name="lowerLevel"></param>
 /// <param name="outputType">Arg0 = Debug, Arg1 = Test</param>
 public Coordinator(
     string scenarioFile,
     string schemaFile,
     string replayFile,
     ref SimulationEventDistributor distributor,
     //string hostname,
     //string portString,
     string simModelName,
     string contextControl,//*NETWORK"
     string updateIncr,
     string lowerLevel,
     List <string> logTypes,
     string debugFile
     )// Needed(?) only so can start a thread
 {
     SetError(false);
     coordinatorThread = null;
     eCommReceiver     = null;
     //textChatServerThread = null;
     //handshakeManagerThread = null;
     Coordinator.scenarioFile = scenarioFile;
     Coordinator.schemaFile   = schemaFile;
     Coordinator.replayFile   = replayFile;
     //Coordinator.hostname = hostname;
     //Coordinator.portString = portString;
     Coordinator.distributor    = distributor;
     Coordinator.simModelName   = simModelName;
     Coordinator.contextControl = contextControl; //*NETWORK"
     Coordinator.updateIncr     = updateIncr;
     Coordinator.lowerLevel     = lowerLevel;     //GUI
     Coordinator.loggingTypes   = logTypes;
     Coordinator.debugFile      = debugFile;
 }
Example #2
0
        public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor)
        {
            this.blackboard  = blackboard;
            this.bbClient    = new BlackboardClient();
            this.distributor = distributor;
            this.distClient  = new SimulationEventDistributorClient();
            this.simModel    = simModel;

            distributor.RegisterClient(ref distClient);
            //distClient.Subscribe("NewObject");
            //distClient.Subscribe("RevealObject");
            //distClient.Subscribe("TimeTick");
            //distClient.Subscribe("HandshakeInitializeGUIDone");
            //distClient.Subscribe("ResetSimulation");

            blackboard.RegisterClient(ref bbClient);
            bbClient.Subscribe("PhysicalObject", "ID", true, false);
            bbClient.Subscribe("PhysicalObject", "OwnerID", true, false);
            bbClient.Subscribe("PhysicalObject", "ClassName", true, false);
            bbClient.Subscribe("PhysicalObject", "Location", true, false);
            bbClient.Subscribe("PhysicalObject", "Capability", true, false);
            bbClient.Subscribe("PhysicalObject", "Vulnerability", true, false);
            bbClient.Subscribe("PhysicalObject", "IsWeapon", true, false);
            bbClient.Subscribe("PhysicalObject", "PursueStarted", true, false);
            bbClient.Subscribe("PhysicalObject", "PursueTargetID", true, false);
            bbClient.Subscribe("PhysicalObject", "SelfDefenseStartAttack", true, true);
            bbClient.Subscribe("PhysicalObject", "SelfDefenseCapability", true, true);
            bbClient.Subscribe("PhysicalObject", "SelfDefenseTargetID", true, true);
            bbClient.Subscribe("PhysicalObject", "TargetsInRange", true, false);
            bbClient.Subscribe("PhysicalObject", "CurrentAttacks", true, false);
            bbClient.Subscribe("PhysicalObject", "AttackState", true, false);
            objectProxies = new Dictionary <string, SimulationObjectProxy>();
        }
Example #3
0
        public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor)
        {
            this.blackboard  = blackboard;
            this.bbClient    = new BlackboardClient();
            this.distributor = distributor;
            this.distClient  = new SimulationEventDistributorClient();
            this.simModel    = simModel;

            distributor.RegisterClient(ref distClient);
            //distClient.Subscribe("NewObject");
            //distClient.Subscribe("RevealObject");
            //distClient.Subscribe("TimeTick");
            //distClient.Subscribe("StateChange");
            //distClient.Subscribe("ResetSimulation");

            blackboard.RegisterClient(ref bbClient);
            bbClient.Subscribe("PhysicalObject", "ID", true, false);
            bbClient.Subscribe("PhysicalObject", "StateTable", true, false);
            bbClient.Subscribe("PhysicalObject", "Throttle", true, false);
            bbClient.Subscribe("PhysicalObject", "FuelCapacity", true, true);
            bbClient.Subscribe("PhysicalObject", "FuelAmount", true, true);
            bbClient.Subscribe("PhysicalObject", "FuelConsumptionRate", true, true);
            bbClient.Subscribe("PhysicalObject", "FuelDepletionState", true, true);
            bbClient.Subscribe("PhysicalObject", "DockedToParent", true, false);

            objectProxies = new Dictionary <string, SimulationObjectProxy>();
        }
        public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor)
        {
            this.blackboard  = blackboard;
            this.bbClient    = new BlackboardClient();
            this.distributor = distributor;
            this.distClient  = new SimulationEventDistributorClient();
            this.simModel    = simModel;

            distributor.RegisterClient(ref distClient);
            //distClient.Subscribe("NewObject");
            //distClient.Subscribe("MoveObject");
            //distClient.Subscribe("TimeTick");
            //distClient.Subscribe("ResetSimulation");

            blackboard.RegisterClient(ref bbClient);
            bbClient.Subscribe("PhysicalObject", "ID", true, false);
            bbClient.Subscribe("PhysicalObject", "Location", true, false);
            bbClient.Subscribe("PhysicalObject", "Velocity", true, false);
            bbClient.Subscribe("PhysicalObject", "Size", true, false);
            bbClient.Subscribe("PhysicalObject", "DockedToParent", true, false);
            bbClient.Subscribe("PhysicalObject", "Capability", true, false);
            bbClient.Subscribe("PhysicalObject", "Vulnerability", true, false);
            bbClient.Subscribe("PhysicalObject", "TargetsInRange", true, true);
            bbClient.Subscribe("PhysicalObject", "State", true, false);
            //bbClient.Subscribe("PhysicalObject", "MaximumSpeed", true, false);
            //bbClient.Subscribe("PhysicalObject", "Throttle", true, false);
            //bbClient.Subscribe("PhysicalObject", "DestinationLocation", true, false);
            objectProxies = new Dictionary <string, SimulationObjectProxy>();
        }
Example #5
0
        public void Start(SimulationModelInfo simModel, ref SimulationEventDistributor distributor, string logName, bool loop)
        {
            try
            {
                playerThread = new Thread(new ThreadStart(EventLoop));
                //nc = new NetworkClient();
                //nc.Connect(hostname, port);
                distClient = new SimulationEventDistributorClient();
                distributor.RegisterClient(ref distClient);
                this.simModel   = simModel;
                time            = 0;
                this.loop       = loop;
                this.logname    = logName;
                updateFrequency = simModel.simulationExecutionModel.updateFrequency;

                SimulationEvent ev = SimulationEventFactory.BuildEvent(ref simModel, "ResetSimulation");
                distClient.PutEvent(ev);
                LoadEvents(logName);

                playerThread.Start();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
 public BlackboardManagerSim()
 {
     blackboard  = null;
     bbClient    = null;
     distributor = null;
     distClient  = null;
     simModel    = null;
 }
Example #7
0
 public StaticAttributeSim()
 {
     blackboard    = null;
     bbClient      = null;
     distributor   = null;
     distClient    = null;
     simModel      = null;
     objectProxies = null;
 }
Example #8
0
 public TextChatServer(string simModelPath, ref SimulationEventDistributor distributor)
 {
     simModelName   = simModelPath;
     simModelInfo   = smr.readModel(simModelName);
     isRunning      = false;
     roomMembership = new Dictionary <string, List <string> >();
     server         = new SimulationEventDistributorClient();
     distributor.RegisterClient(ref server);
 }
Example #9
0
 public FuelHandlingSim()
 {
     time          = 0;
     blackboard    = null;
     bbClient      = null;
     distributor   = null;
     distClient    = null;
     simModel      = null;
     objectProxies = null;
 }
Example #10
0
 public DynamicRegionSim()
 {
     time          = 0;
     blackboard    = null;
     bbClient      = null;
     distributor   = null;
     distClient    = null;
     simModel      = null;
     objectProxies = null;
 }
Example #11
0
 public ExternalCommunicationSim()
 {
     blackboard    = null;
     bbClient      = null;
     distributor   = null;
     distClient    = null;
     simModel      = null;
     objectProxies = null;
     v3            = null;
 }
 public CollisionDetectionSim()
 {
     time          = 0;
     blackboard    = null;
     bbClient      = null;
     distributor   = null;
     distClient    = null;
     simModel      = null;
     objectProxies = null;
 }
Example #13
0
 public AttackProcessorSim()
 {
     time          = 0;
     blackboard    = null;
     bbClient      = null;
     distributor   = null;
     distClient    = null;
     simModel      = null;
     objectProxies = null;
     randomSeed    = 0;
     random        = new Random(randomSeed);
 }
Example #14
0
 public ReplayLogger(string logsPath, string simModelPath, ref SimulationEventDistributor distributor, string mode)
 {
     logPath      = logsPath;
     simModelName = simModelPath;
     simModelInfo = smr.readModel(simModelName);
     isRunning    = false;
     logMode      = mode;
     //server = new NetworkClient();
     //server.Connect(hostName, Convert.ToInt32(portNumber));
     cc = new SimulationEventDistributorClient();
     distributor.RegisterClient(ref cc);
 }
Example #15
0
        public EventCommunicator(NetworkClient s)
        {
            server = s;
            //Dennis: This needs to be updated to your directory
            simModelInfo = smr.readModel(@"C:\SVN\NewDDD\src\DataFiles\SimulationModel.xml");
//simModelInfo = smr.readModel("SimulationModel.xml");
            SimulationEventDistributor       dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc   = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);
            server.Subscribe("MoveDone");
        }
Example #16
0
        public EventCommunicator(NetworkClient s)
        {
            server = s;
            //Dennis: This needs to be updated to your directory
            simModelInfo = smr.readModel(@"C:\SVN\NewDDD\src\DataFiles\SimulationModel.xml");
//simModelInfo = smr.readModel("SimulationModel.xml");
            SimulationEventDistributor dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);
            server.Subscribe("MoveDone");
        }
Example #17
0
        /// <summary>
        /// Constructs a watcher
        /// </summary>
        /// <param name="inputDelta">Time to sleep between checking ticks</param>
        public TickWatcher(NetworkClient s, string simModel)
        {
            string simModelName = simModel;

            simModelInfo = smr.readModel(simModelName);
            server       = s;
            SimulationEventDistributor       dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc   = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);/////////////////
            server.Subscribe("TimeTick");
        }
Example #18
0
 /// <summary>
 /// The NetworkServer will be instantiated once in the DDD Server.
 /// External applications such as agents and custom GUIs should ignore this class.
 /// </summary>
 /// <param name="port"></param>
 /// <param name="dist"></param>
 public NetworkServer(int port, ref SimulationEventDistributor dist)
 {
     server     = null;
     state      = ServerState.STOPPING;
     eventDist  = dist;
     m_serverIP = null;
     this.port  = port;
     connectionListenerThread = null;
     //eventCheckerThread = null;
     clientHandlers     = new List <NetworkServerConnectionHandler>();
     clientHandlersLock = new object();
     //clientCount = 0;
 }
Example #19
0
        protected EventListener(NetworkClient server)
        {
            myQM = QueueManager.UniqueInstance();

            SimulationModelReader smr          = new SimulationModelReader();
            SimulationModelInfo   simModelInfo = smr.readModel("SimulationModel.xml");

            SimulationEventDistributor       dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc   = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);
            server.Subscribe("MoveDone");
        }
Example #20
0
        public ScoringSim()
        {
            time          = 0;
            blackboard    = null;
            bbClient      = null;
            distributor   = null;
            distClient    = null;
            simModel      = null;
            objectProxies = null;

            lastScore = new Dictionary <string, double>();
            //regions = new Dictionary<string, BlockingRegion>();
        }
Example #21
0
        public void AddNetworkClient(NetworkClient s)
        {
            server = s;

            simModelInfo = smr.readModel("SimulationModel.xml");

            SimulationEventDistributor dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);
            server.Subscribe("MoveDone");
            server.Subscribe("MoveObjectRequest");
            server.Subscribe("AttackObjectRequest");
        }
Example #22
0
        public void AddNetworkClient(NetworkClient s)
        {
            server = s;

            simModelInfo = smr.readModel("SimulationModel.xml");

            SimulationEventDistributor       dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc   = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);
            server.Subscribe("MoveDone");
            server.Subscribe("MoveObjectRequest");
            server.Subscribe("AttackObjectRequest");
        }
Example #23
0
        protected EventListener(NetworkClient server)
        {
            myQM = QueueManager.UniqueInstance();

            SimulationModelReader smr = new SimulationModelReader();
            SimulationModelInfo simModelInfo = smr.readModel("SimulationModel.xml");

            SimulationEventDistributor dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);
            server.Subscribe("MoveDone");

        }
Example #24
0
        //private Dictionary<string, Team> teams;
        //private Dictionary<string, DecisionMaker> decisionMakers;

        public SelfDefenseSim()
        {
            time          = 0;
            blackboard    = null;
            bbClient      = null;
            distributor   = null;
            distClient    = null;
            simModel      = null;
            objectProxies = null;
            randomSeed    = 0;
            random        = new Random(randomSeed);

            //teams = new Dictionary<string, Team>();
            //decisionMakers = new Dictionary<string, DecisionMaker>();
        }
Example #25
0
        private void InitializeDistributor()
        {
            distributor = new SimulationEventDistributor(ref simModelInfo);
            distClient  = new SimulationEventDistributorClient();
            distributor.RegisterClient(ref distClient);


            foreach (Aptima.Asim.DDD.CommonComponents.SimulationModelTools.EventInfo e in simModelInfo.eventModel.events.Values)
            {
                if (e.simCoreSubscribe)
                {
                    distClient.Subscribe(e.name);
                }
            }
        }
Example #26
0
        public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor)
        {
            this.blackboard  = blackboard;
            this.bbClient    = new BlackboardClient();
            this.distributor = distributor;
            this.distClient  = new SimulationEventDistributorClient();
            this.simModel    = simModel;

            distributor.RegisterClient(ref distClient);
            //distClient.Subscribe("NewObject");
            //distClient.Subscribe("ResetSimulation");

            blackboard.RegisterClient(ref bbClient);
            bbClient.Subscribe("BaseObject", "ID", true, true);
        }
Example #27
0
        public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor)
        {
            this.blackboard  = blackboard;
            this.bbClient    = new BlackboardClient();
            this.distributor = distributor;
            this.distClient  = new SimulationEventDistributorClient();
            this.simModel    = simModel;

            distributor.RegisterClient(ref distClient);
            blackboard.RegisterClient(ref bbClient);
            bbClient.Subscribe("PhysicalObject", "ID", true, false);
            bbClient.Subscribe("PhysicalObject", "Location", true, false);

            objectProxies = new Dictionary <string, SimulationObjectProxy>();
        }
Example #28
0
        static void Main(string[] args)
        {
            string scenarioFile = args[0];

            new ScenarioToQueues(scenarioFile);
            //           string hostname = "dgeller";
            string hostname = args[1];
//            int port = 9999;
            int port = int.Parse(args[2]);
            //           string simModelName = "SimulationModel.xml";
            string        simModelName = args[3];
            NetworkClient c            = new NetworkClient();

            c.Connect(hostname, port);
            EventCommunicator eventCommunicator = new EventCommunicator(c);

            SimulationModelReader smr          = new SimulationModelReader();
            SimulationModelInfo   simModelInfo = smr.readModel(simModelName);

            SimulationEventDistributor       dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc   = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);



            sink = new Watcher(400);
            ThreadStart stub       = new ThreadStart(sink.WatcherThread);
            Thread      stubThread = new Thread(stub);

            stubThread.Start();


            for (int i = 0; i < 5; i++) // in test the move happens at time 2
            {
                TimerTicker.NextTick();
            }
            IncomingList.Add(new MoveComplete_Event("UNIT0"));
            for (int i = 0; i < 2; i++)
            {
                TimerTicker.NextTick();
            }

            Console.WriteLine("The end");
        }
Example #29
0
        /*
         *  STAThread means the app uses Single-Threaded Apartment threading.
         *  It specifies the threading model used when you use COM interop.
         *  Likely it won't affect your program, since COM isn't usually
         *  needed in .NET in most cases.
         */
        /// <summary>
        /// Argumnts to main are
        /// hostname
        /// port number
        /// simulation moel name
        /// 'LIVE" to use network connections, else use crude simulation
        /// Override the sleep interval given in the sim model file
        /// </summary>
        /// <param name="args"></param>
        /// <remarks>arg 0: Scenario file
        /// arg 1: schema file
        /// arg 2: host name
        /// arg 3: port number
        /// arg 4: simulation model name
        /// arg 5: if "NETWORK" (or not provid3ed) program is connected to real network layer;
        ///        else use a simulated mechanism
        /// arg 6: Update frequency in millisec
        /// arg 7: If  GUI ((or absent) assume connected to real GUI; else simulate incoming messages
        ///  Note: Both arg 5 and arg 6 involve (different) simulated ways to generate incoming events
        /// </remarks>

        static void Main(string[] args)
        {
            //This does not get called by SimCoreTestGUI
            DebugLogger.SetDebugStyleConsole();
            List <string> loggingTypes = new List <string>();

            loggingTypes.Add("test");
            loggingTypes.Add("debug");
            SimulationEventDistributor dist = null;
            Coordinator boss = new Coordinator(args[0], args[1], null, ref dist, args[4], args[5], args[6], args[7], loggingTypes, @"C:\");

            //add types of logging here
            boss.CoordinateNow();



            Coordinator.debugLogger.Writeline("Program.cs", "The end", "all");
        }
Example #30
0
        static void Main(string[] args)
        {
            string scenarioFile = args[0];
            new ScenarioToQueues(scenarioFile);
 //           string hostname = "dgeller";
            string hostname=args[1];
//            int port = 9999;
            int port = int.Parse(args[2]);
 //           string simModelName = "SimulationModel.xml";
            string simModelName = args[3];
            NetworkClient c = new NetworkClient();
            c.Connect(hostname, port);
            EventCommunicator eventCommunicator = new EventCommunicator(c);

            SimulationModelReader smr = new SimulationModelReader();
            SimulationModelInfo simModelInfo = smr.readModel(simModelName);

            SimulationEventDistributor dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);



            sink = new Watcher(400);
            ThreadStart stub = new ThreadStart(sink.WatcherThread);
            Thread stubThread = new Thread(stub);
            stubThread.Start();


            for (int i = 0; i < 5; i++) // in test the move happens at time 2
            {
                TimerTicker.NextTick();
            }
            IncomingList.Add(new MoveComplete_Event("UNIT0"));
            for (int i = 0; i < 2; i++)
            {
                TimerTicker.NextTick();
            }
 
            Console.WriteLine("The end");


        }
Example #31
0
 public SeamateProcessorSim()
 {
     time                          = 0;
     blackboard                    = null;
     bbClient                      = null;
     distributor                   = null;
     distClient                    = null;
     simModel                      = null;
     objectProxies                 = null;
     scoreRulesExist               = null;
     handledAttacks                = null;
     dms                           = null;
     classifications               = null;
     _terminalToDMMap              = null;
     IndividualDMIsLoggedIn        = false;
     objectAssignmentList          = null;
     _attackTargetHashes           = null;
     mostRecentItemsForStimulators = null;
 }
Example #32
0
        public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor)
        {
            this.blackboard  = blackboard;
            this.bbClient    = new BlackboardClient();
            this.distributor = distributor;
            this.distClient  = new SimulationEventDistributorClient();
            this.simModel    = simModel;

            distributor.RegisterClient(ref distClient);
            //distClient.Subscribe("NewObject");
            //distClient.Subscribe("RevealObject");
            //distClient.Subscribe("StateChange");
            //distClient.Subscribe("ResetSimulation");

            blackboard.RegisterClient(ref bbClient);
            bbClient.Subscribe("BaseObject", "ID", true, false);
            bbClient.Subscribe("DecisionMaker", "RoleName", true, true);
            bbClient.Subscribe("DecisionMaker", "TeamMember", true, true);
            bbClient.Subscribe("PhysicalObject", "ObjectName", true, true);
            bbClient.Subscribe("PhysicalObject", "OwnerID", true, true);
            bbClient.Subscribe("PhysicalObject", "ClassName", true, true);
            bbClient.Subscribe("PhysicalObject", "Size", true, true);
            bbClient.Subscribe("PhysicalObject", "MaximumSpeed", true, true);
            bbClient.Subscribe("PhysicalObject", "State", true, true);
            bbClient.Subscribe("PhysicalObject", "StateTable", true, true);
            bbClient.Subscribe("PhysicalObject", "Sensors", true, true);
            bbClient.Subscribe("PhysicalObject", "Emitters", true, true);
            bbClient.Subscribe("PhysicalObject", "LaunchDuration", true, true);
            bbClient.Subscribe("PhysicalObject", "AttackDuration", true, true);
            bbClient.Subscribe("PhysicalObject", "EngagementDuration", true, true);
            bbClient.Subscribe("PhysicalObject", "DockingDuration", true, true);
            bbClient.Subscribe("PhysicalObject", "IsWeapon", true, true);
            bbClient.Subscribe("PhysicalObject", "IconName", true, true);
            bbClient.Subscribe("PhysicalObject", "RemoveOnDestruction", true, true);
            bbClient.Subscribe("PhysicalObject", "CustomAttributes", true, true);
            bbClient.Subscribe("PhysicalObject", "CanOwn", true, true);
            bbClient.Subscribe("PhysicalObject", "SubplatformLimit", true, true);
            bbClient.Subscribe("PhysicalObject", "DefaultClassification", true, true);
            bbClient.Subscribe("PhysicalObject", "ClassificationDisplayRules", true, true);
            bbClient.Subscribe("PhysicalObject", "CurrentClassification", true, true);
            objectProxies = new Dictionary <string, SimulationObjectProxy>();
        }
Example #33
0
        public Form1(string simModel, string host, string port, string user)
        {
            InitializeComponent();
            userID       = user;
            hostName     = host;
            portNumber   = port;
            simModelName = simModel;
            simModelInfo = smr.readModel(simModelName);
            AddToTextBoxText("Welcome " + userID + ".");
            server = new NetworkClient();
            server.Connect(hostName, Convert.ToInt32(portNumber));
            SimulationEventDistributor       dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc   = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);
            server.Subscribe("TextChat");
            isRunning           = true;
            waitForEventsThread = new Thread(new ThreadStart(WaitForEvents));
            waitForEventsThread.Start();
        }
Example #34
0
        public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor)
        {
            this.blackboard  = blackboard;
            this.bbClient    = new BlackboardClient();
            this.distributor = distributor;
            this.distClient  = new SimulationEventDistributorClient();
            this.simModel    = simModel;

            distributor.RegisterClient(ref distClient);
            //distClient.Subscribe("RevealObject");
            //distClient.Subscribe("SubplatformLaunch");
            //distClient.Subscribe("WeaponLaunch");
            //distClient.Subscribe("SubplatformDock");
            //distClient.Subscribe("TimeTick");
            //distClient.Subscribe("ResetSimulation");
            //distClient.Subscribe("StateChange");

            blackboard.RegisterClient(ref bbClient);
            bbClient.Subscribe("PhysicalObject", "ID", true, false);
            bbClient.Subscribe("PhysicalObject", "ParentObjectID", true, true);
            bbClient.Subscribe("PhysicalObject", "OwnerID", true, false);
            bbClient.Subscribe("PhysicalObject", "DockedToParent", true, true);
            bbClient.Subscribe("PhysicalObject", "ChildObjects", true, true);
            bbClient.Subscribe("PhysicalObject", "DockedObjects", true, true);
            bbClient.Subscribe("PhysicalObject", "DockedWeapons", true, true);
            bbClient.Subscribe("PhysicalObject", "LaunchStarted", true, true);
            bbClient.Subscribe("PhysicalObject", "LaunchEndTime", true, true);
            bbClient.Subscribe("PhysicalObject", "LaunchDestinationLocation", true, true);
            bbClient.Subscribe("PhysicalObject", "LaunchDone", true, false);
            bbClient.Subscribe("PhysicalObject", "LaunchDuration", true, false);
            bbClient.Subscribe("PhysicalObject", "DockingStarted", true, true);
            bbClient.Subscribe("PhysicalObject", "DockingEndTime", true, true);
            bbClient.Subscribe("PhysicalObject", "LaunchIsWeapon", true, true);
            bbClient.Subscribe("PhysicalObject", "LaunchWeaponTargetID", true, true);
            bbClient.Subscribe("PhysicalObject", "DockingDuration", true, false);
            bbClient.Subscribe("PhysicalObject", "IsWeapon", true, false);
            bbClient.Subscribe("PhysicalObject", "ClassName", true, false);

            objectProxies = new Dictionary <string, SimulationObjectProxy>();
        }
Example #35
0
        //[STAThread]
        static void Main(string[] args)
        {
            string hostname = args[0];
            int port = Int32.Parse(args[1]);
            string simModelName = args[2];

            SimulationModelReader smr = new SimulationModelReader();
            SimulationModelInfo simModelInfo = smr.readModel(simModelName);

            SimulationEventDistributor dist = new SimulationEventDistributor(ref simModelInfo);
            SimulationEventDistributorClient cc = new SimulationEventDistributorClient();

            dist.RegisterClient(ref cc);
            cc.Subscribe("ALL");

            ScenarioReader scenarioReader = new ScenarioReader();
            QueueManager queueManager = QueueManager.UniqueInstance();

            

            c = new NetworkClient();
            c.Connect(hostname, port);
            EventListener myEL = EventListener.UniqueInstance(c);
            int t = 0;
            int dt = simModelInfo.simulationExecutionModel.updateFrequency;

            SimulationEvent tick = SimulationEventFactory.BuildEvent(ref simModelInfo, "TimeTick");
            ((IntegerValue)tick["Time"]).value = t;

            ConsoleKeyInfo cki;
            //Console.TreatControlCAsInput = false;  //This explodes my code for some reason, but is in Gabe's client code and works fine, what does it do?
            Console.CancelKeyPress += new ConsoleCancelEventHandler(MyExitHandler);

            List<SimulationEvent> events = null;

            while (c.IsConnected() && queueManager.count() > 0)
            {

                //Read incoming events queue
                //if any events deal with a conditional event, remove the conditional
                //event from the conditional list, and place it onto the event queue
                //if a unit dies, remove them from the event queue and condition list

                while (c.IsConnected() && !(queueManager.eventsAtTime(t)))
                {
                    events = c.GetEvents();
                    foreach (SimulationEvent e in events)
                    {
                        if (e.eventType == "MoveDone")
                            c.PutEvent(myEL.MoveDoneReceived(e, simModelInfo, tick));

                        System.Console.WriteLine(SimulationEventFactory.XMLSerialize(e));
                    }



                    ((IntegerValue)tick["Time"]).value = t;
                    c.PutEvent(tick);
                    //Console.WriteLine("Sending...");
                    //Console.WriteLine(SimulationEventFactory.XMLSerialize(tick));
                    Thread.Sleep(dt);

                    t += dt;
                }

                if (c.IsConnected())
                {
                    QueueManager.sendEventsAtTime(t, c);
                    ((IntegerValue)tick["Time"]).value = t;
                    c.PutEvent(tick);
                    //Console.WriteLine("Sending...");
                    //Console.WriteLine(SimulationEventFactory.XMLSerialize(e));
                    t += dt;
                }
                


            }

            while (c.IsConnected())
            {
                ((IntegerValue)tick["Time"]).value = t;
                c.PutEvent(tick);
                //Console.WriteLine("Sending...");
                //Console.WriteLine(SimulationEventFactory.XMLSerialize(tick));
                Thread.Sleep(dt);

                t += dt;
            }
        }