コード例 #1
0
        private static void Live(Production production)
        {
            Console.WriteLine("Opening RabbitMQ Connections...");
            IRecieveRepository <Wax3Data>       wax3Reciever       = new RabbitMqStreamer <Wax3Data>(RabbitConnectionString, Exchange);
            ISendRepository <Wax3State>         wax3StateSender    = new RabbitMqStreamer <Wax3State>(RabbitConnectionString, Exchange);
            IRecieveRepository <RfidData>       rfidReciever       = new RabbitMqStreamer <RfidData>(RabbitConnectionString, Exchange);
            ISendRepository <RfidState>         rfidStateSender    = new RabbitMqStreamer <RfidState>(RabbitConnectionString, Exchange);
            IRecieveRepository <Wax3State>      wax3StateReciever  = new RabbitMqStreamer <Wax3State>(RabbitConnectionString, Exchange);
            IRecieveRepository <RfidState>      rfidStateReciever  = new RabbitMqStreamer <RfidState>(RabbitConnectionString, Exchange);
            IRecieveRepository <ApplianceEvent> appEventReciever   = new RabbitMqStreamer <ApplianceEvent>(RabbitConnectionString, Exchange);
            ISendRepository <AoiState>          aoiStateSender     = new RabbitMqStreamer <AoiState>(RabbitConnectionString, Exchange);
            IRecieveRepository <AoiState>       aoiStateReciever   = new RabbitMqStreamer <AoiState>(RabbitConnectionString, Exchange);
            ISendRepository <ShotDecision>      shotDecisionSender = new RabbitMqStreamer <ShotDecision>(RabbitConnectionString, Exchange);

            Console.WriteLine("Starting Activity Recognisers...");
            IRecogniser <Wax3Data, Wax3State> wax3Recogniser = new Wax3Recogniser();
            IRecogniser <RfidData, RfidState> rfidRecogniser = new RfidRecogniser();

            Console.WriteLine("Starting Area of Interest Classifier...");
            var aoiClassifier = new AoiClassifier(production);

            Console.WriteLine("Starting Auto-Director...");
            var autoDirector = new AutoDirector(production);

            Console.WriteLine("Starting Stream Managers...");
            IStreamManager wax3StreamManager    = new StreamManager <Wax3Data, Wax3State>(wax3Reciever, wax3StateSender, wax3Recogniser);
            IStreamManager rfidStreamManager    = new StreamManager <RfidData, RfidState>(rfidReciever, rfidStateSender, rfidRecogniser);
            IStreamManager aoiWax3StreamManager = new StreamManager <Wax3State, AoiState>(wax3StateReciever, aoiStateSender, aoiClassifier);
            IStreamManager aoiRfidStreamManager = new StreamManager <RfidState, AoiState>(rfidStateReciever, aoiStateSender, aoiClassifier);
            IStreamManager aoiAppStreamManager  = new StreamManager <ApplianceEvent, AoiState>(appEventReciever, aoiStateSender, aoiClassifier);
            IStreamManager shotStreamManager    = new StreamManager <AoiState, ShotDecision>(aoiStateReciever, shotDecisionSender, autoDirector);

            wax3StreamManager.Start();
            rfidStreamManager.Start();

            Console.WriteLine("Recognisers Running.");

            aoiWax3StreamManager.Start();
            aoiRfidStreamManager.Start();
            aoiAppStreamManager.Start();

            Console.WriteLine("Area of Interest Classifier runnning.");

            shotStreamManager.Start();

            Console.WriteLine("Auto-Director running.");

            var timer = new Timer((state) =>
            {
                wax3Recogniser.UpdateClock(DateTime.Now);
                rfidRecogniser.UpdateClock(DateTime.Now);
                aoiClassifier.UpdateClock(DateTime.Now);
                autoDirector.UpdateClock(DateTime.Now);
            }, null, TickPeriod, Timeout.Infinite);

            Console.WriteLine("Type \"exit\" to terminate process:");

            while ((Console.ReadLine().ToLower()) != "exit")
            {
            }

            Console.WriteLine("Terminating Process...");
            timer.Dispose();
            wax3StreamManager.Stop();
            rfidStreamManager.Stop();
            aoiWax3StreamManager.Stop();
            aoiRfidStreamManager.Stop();
            aoiAppStreamManager.Stop();
            shotStreamManager.Stop();
        }
コード例 #2
0
        private static void Replay(Production production)
        {
            Console.WriteLine("Opening MongoDB Connections...");
            IReadOnlyRepository <Wax3Data>       wax3Repository         = new MongoRepository <Wax3Data>(MongoDBConnectionString);
            IReadWriteRepository <Wax3State>     wax3StateRepository    = new MongoRepository <Wax3State>(MongoDBConnectionString);
            IReadOnlyRepository <RfidData>       rfidRepository         = new MongoRepository <RfidData>(MongoDBConnectionString);
            IReadWriteRepository <RfidState>     rfidStateRepository    = new MongoRepository <RfidState>(MongoDBConnectionString);
            IReadOnlyRepository <ApplianceEvent> appEventRepository     = new MongoRepository <ApplianceEvent>(MongoDBConnectionString);
            IReadWriteRepository <AoiState>      aoiStateRepository     = new MongoRepository <AoiState>(MongoDBConnectionString);
            IReadWriteRepository <ShotDecision>  shotDecisionRepository = new MongoRepository <ShotDecision>(MongoDBConnectionString);

            Console.WriteLine("Reading Replay Dataset...");
            var wax3Data = wax3Repository.GetAll().ToList().Where(d => d.Timestamp.Date == production.Takes.First().Media.First().StartTime.Date).OrderBy(d => d.Timestamp).AsQueryable();
            var rfidData = rfidRepository.GetAll().ToList().Where(d => d.Timestamp.Date == production.Takes.First().Media.First().StartTime.Date).OrderBy(d => d.Timestamp).AsQueryable();

            if (!wax3Data.Any() || !rfidData.Any())
            {
                Console.WriteLine("No Data to Replay. Exiting.");
                return;
            }

            Console.WriteLine("Starting Activity Recognisers...");
            IRecogniser <Wax3Data, Wax3State> wax3Recogniser = new Wax3Recogniser();
            IRecogniser <RfidData, RfidState> rfidRecogniser = new RfidRecogniser();

            Console.WriteLine("    Starting Replay Managers...");
            IReplayManager <Wax3State> wax3ReplayManager = new ReplayManager <Wax3Data, Wax3State>(wax3Recogniser, wax3Data);
            IReplayManager <RfidState> rfidReplayManager = new ReplayManager <RfidData, RfidState>(rfidRecogniser, rfidData);

            Console.WriteLine("    Processing Datasets...");
            wax3ReplayManager.Process();
            rfidReplayManager.Process();

            var wax3States = wax3ReplayManager.GetStates().AsQueryable();
            var rfidStates = rfidReplayManager.GetStates().AsQueryable();

            Console.WriteLine("    Inserting States into MongoDB...");
            wax3StateRepository.InsertMany(wax3States);
            rfidStateRepository.InsertMany(rfidStates);

            Console.WriteLine("Starting Area of Interest Classifier...");
            var aoiClassifier = new AoiClassifier(production);

            Console.WriteLine("    Starting Replay Managers...");
            IReplayManager <AoiState> aoiReplayManager = new AoiReplayManager(aoiClassifier, wax3States, rfidStates, appEventRepository.GetAll());

            Console.WriteLine("    Processing Datasets...");
            aoiReplayManager.Process();
            var aoiStates = aoiReplayManager.GetStates().AsQueryable();

            Console.WriteLine("    Inserting States into MongoDB...");
            aoiStateRepository.InsertMany(aoiStates);

            Console.WriteLine("Starting Auto-Director...");
            var autoDirector = new AutoDirector(production);

            Console.WriteLine("    Starting Replay Managers...");
            IReplayManager <ShotDecision> shotDecisionReplayManager = new ReplayManager <AoiState, ShotDecision>(autoDirector, aoiStates);

            Console.WriteLine("    Processing Datasets...");
            shotDecisionReplayManager.Process();
            var shotDecisions = shotDecisionReplayManager.GetStates();

            Console.WriteLine("    Inserting Shot Decisions into MongoDB...");

            shotDecisionRepository.InsertMany(shotDecisions);

            Console.WriteLine("Complete.");
        }