コード例 #1
0
        public PlayerState(String player_name)
        {
            this.player_name = player_name;
            signal           = new ManualResetEvent(false);
            state_lock       = new object();
            pt = new PerformanceTest(player_name);
            sensorId_sensorData = new Dictionary <int, SensorData>();
            foreach (var sensor_id in MetaData.PLAYER_MAP[player_name])
            {
                sensorId_sensorData.Add(sensor_id, QueryHelpers.getDefaultSensorDataWithSensorID(sensor_id));
            }
            currentRunningState = new CurrentRunningState(-1, -1, -1);
            aggRunning_full     = new AggregateRunningData();
            aggRunning_1min     = new TimeWindow <CurrentRunningData, AggregateRunningData>
                                      (60 * MetaData.SECOND_TO_PICO, "ts_start", new AggregateRunningData(), QueryHelpers.updateAggregateRunningData);
            aggRunning_5min = new TimeWindow <CurrentRunningData, AggregateRunningData>
                                  (5 * 60 * MetaData.SECOND_TO_PICO, "ts_start", new AggregateRunningData(), QueryHelpers.updateAggregateRunningData);
            aggRunning_20min = new TimeWindow <CurrentRunningData, AggregateRunningData>
                                   (20 * 60 * MetaData.SECOND_TO_PICO, "ts_start", new AggregateRunningData(), QueryHelpers.updateAggregateRunningData);

            heatmap_full  = new HeatmapState(player_name);
            heatmap_1min  = new HeatmapState(player_name, 1 * 60);
            heatmap_5min  = new HeatmapState(player_name, 5 * 60);
            heatmap_10min = new HeatmapState(player_name, 10 * 60);
        }
コード例 #2
0
        public static AggregateRunningData updateAggregateRunningData
            (AggregateRunningData seed, CurrentRunningData curValue,
            IList <CurrentRunningData> expiredList, long count)
        {
            double standing_time = seed.standing_time,
                   standing_dist = seed.standing_distance,
                   trot_time     = seed.trot_time,
                   trot_dist     = seed.trot_distance,
                   low_time      = seed.low_time,
                   low_dist      = seed.low_distance,
                   medium_time   = seed.medium_time,
                   medium_dist   = seed.medium_distance,
                   high_time     = seed.high_time,
                   high_dist     = seed.high_distance,
                   sprint_time   = seed.sprint_time,
                   sprint_dist   = seed.sprint_distance;


            //for each expired element, remove its values from previous seed's values
            foreach (var element in expiredList)
            {
                subtractCurrentRunningData(element, ref standing_time, ref standing_dist,
                                           ref trot_time, ref trot_dist, ref low_time, ref low_dist, ref medium_time,
                                           ref medium_dist, ref high_time, ref high_dist, ref sprint_time, ref sprint_dist);
            }


            //add current values to previous seed values
            addCurrentRunningData(curValue, ref standing_time, ref standing_dist,
                                  ref trot_time, ref trot_dist, ref low_time, ref low_dist, ref medium_time,
                                  ref medium_dist, ref high_time, ref high_dist, ref sprint_time, ref sprint_dist);


            return(new AggregateRunningData
            {
                player_id = curValue.player_id,
                ts = curValue.ts_stop,
                standing_time = standing_time,
                standing_distance = standing_dist,
                trot_time = trot_time,
                trot_distance = trot_dist,
                low_time = low_time,
                low_distance = low_dist,
                medium_time = medium_time,
                medium_distance = medium_dist,
                high_time = high_time,
                high_distance = high_dist,
                sprint_time = sprint_time,
                sprint_distance = sprint_dist
            });
        }
コード例 #3
0
        public void query1(PlayerData player)
        {
            incrementInputCount();
            CurrentRunningData currentRunning = QueryHelpers.updateCurrentRunningData(currentRunningState, player);

            if (currentRunning != null)
            {
                aggRunning_full = QueryHelpers.updateAggregateRunningData(aggRunning_full, currentRunning, new List <CurrentRunningData> {
                }, 0);
                pt.OutputCount++;
                aggRunning_1min.getUpdate(currentRunning);
                pt.OutputCount++;
                aggRunning_5min.getUpdate(currentRunning);
                pt.OutputCount++;
                aggRunning_20min.getUpdate(currentRunning);
                pt.OutputCount++;
            }
        }