コード例 #1
0
        //done
        private void CreateDataLogger(ILogConfig config)
        {
            _dataLoggerService = new DataLoggerService(config);
            _dataLoggerService.LoggingStarted += (sender, args) =>
            {
                _mainViewModel.GuiStatusViewModel.IsLogging     = true;
                _mainViewModel.GuiStatusViewModel.LoggingStatus = "Logging active!";
            };

            _dataLoggerService.LoggingStopped += (sender, args) =>
            {
                _mainViewModel.GuiStatusViewModel.IsLogging     = false;
                _mainViewModel.GuiStatusViewModel.LoggingStatus = "Logging stopped";
            };
        }
コード例 #2
0
        public async void SecondCase()
        {
            DispatcherTimer dt = new DispatcherTimer()
            {
                Interval = TimeSpan.FromSeconds(1)
            };

            var file = await DataLoggerService.FindFile($"data_{DataLoggerService.GetDate()}.dat", true);

            dt.Tick += async(s, e) =>
            {
                if (file != null)
                {
                    await DataLoggerService.AddContentToFile(file, $"{Temperature}_{DataLoggerService.GetDateTime()}");
                }
            };
            dt.Start();
        }
コード例 #3
0
        public void SimpleCase()
        {
            DispatcherTimer dt = new DispatcherTimer()
            {
                Interval = TimeSpan.FromMinutes(1)
            };

            dt.Tick += async(s, e) =>
            {
                var file = await DataLoggerService.FindFile($"data_{DataLoggerService.GetDateTime()}.dat", true);

                if (file != null)
                {
                    await DataLoggerService.WriteFile(file, $"{Temperature}_{DataLoggerService.GetDateTime()}");
                }
            };
            dt.Start();
        }
コード例 #4
0
ファイル: DataQueryModule.cs プロジェクト: sriramsoftware/IIA
        public DataQueryModule(INAServerContext serverContext) : base("/qr")
        {
            ServerContext = serverContext;
            var accessValidator = new StatelessClientValidator <NAAccessKey, NAApiAccessScope>();

            this.RequiresAllClaims(new[] { accessValidator.GetAccessClaim(NAApiAccessScope.Query) },
                                   accessValidator.GetAccessClaim(NAApiAccessScope.Admin));

            // Query Log Requests
            // Limit is the max number of log requests to return. Default 100
            Get("/log/{limit:int}", async args =>
            {
                var itemLimit         = args.limit as int? ?? 100;
                var dataLoggerService = new DataLoggerService(ServerContext);
                var data = await dataLoggerService.QueryRequestsAsync(itemLimit);
                return(Response.AsJsonNet(data));
            });

            // Query SessionData
            // Id is the ID of the session to find
            Get("/sessdata/{id}", async args =>
            {
                var sessionStorageService = new SessionStorageService(ServerContext);
                var data = await sessionStorageService.GetSessionFromIdentifierAsync((string)args.id);
                return(Response.AsJsonNet(data));
            });

            // Query Tagged Requests
            // Tag is the tag to filter by
            // Limit is the max number of log requests to return
            Get("/tagged/{tags}/{limit:int}", async args =>
            {
                var itemLimit         = args.limit as int? ?? 100;
                var filterTags        = (args.tags != null) ? ((string)args.tags).Split(',') : null;
                var dataLoggerService = new DataLoggerService(ServerContext);
                var data = await dataLoggerService.QueryTaggedRequestsAsync(itemLimit, filterTags);
                return(Response.AsJsonNet(data));
            });
        }
コード例 #5
0
        /// <summary>
        /// Process and log the request and associated data
        /// </summary>
        private async Task ProcessRequestDataAsync(DataRequestType requestType = DataRequestType.Log)
        {
            Guid?sessionIdentifier = null;  // Null means it will be automatically created
            // A cross-domain SID can be specified
            var sentSessId = (string)Request.Form.sid;

            // TODO: Maybe validation to ensure SID is not being overwritten
            if (sentSessId != null)
            {
                if (Guid.TryParse(sentSessId, out Guid resultSessGuid))
                {
                    // TODO: Possibly note that session used custom ID
                    sessionIdentifier = resultSessGuid;
                }
            }

            var sessionInfo = await CreateOrRetrieveSessionAsync(sessionIdentifier);

            var currentSession = sessionInfo.Item1;
            var newSession     = sessionInfo.Item2;

            var eventIdentifier = Guid.NewGuid();

            if (requestType.HasFlag(DataRequestType.Log))
            {
                var req = new LogRequest
                {
                    Identifier        = eventIdentifier,
                    SessionIdentifier = currentSession.SessionId,
                    Timestamp         = DateTime.Now,
                    RequestType       = requestType
                };
                // Get client address
                var clientAddr = GetClientAddress();
                req.OriginAddress = clientAddr;
                req.KQApiNode     = Request.Url;
                if (requestType.HasFlag(DataRequestType.Hit))
                {
                    // Map to Hit request
                    var hitReq = Mapper.Map <HitRequest>(req);
                    // Check if also a web request
                    if (requestType.HasFlag(DataRequestType.Web))
                    {
                        hitReq.Referrer = Request.Headers.Referrer;
                        // Attempt to get page URL
                        hitReq.PageIdentifier =
                            (string)Request.Query.u      // Query string
                            ?? (string)Request.Form.u    // Form data
                            ?? Request.Headers.Referrer; // Referrer
                                                         // Check if FetchScript
                        if (requestType.HasFlag(DataRequestType.FetchScript))
                        {
                            // Map to FetchScriptRequest
                            var fetchScriptReq = Mapper.Map <FetchScriptRequest>(hitReq);
                            hitReq = fetchScriptReq;
                        }
                    }
                    req = hitReq;
                }
                // Tag is not compatible with Hit
                else if (requestType.HasFlag(DataRequestType.Tag))
                {
                    // Log with custom data
                    var tagReq = Mapper.Map <TagRequest>(req);
                    tagReq.Tag       = Request.Form.tag;
                    tagReq.ExtraData = Request.Form.data;
                    req = tagReq;
                }
                // Redirect is not compatible with Tag or Hit
                else if (requestType.HasFlag(DataRequestType.Redirect))
                {
                    // TODO: Log redirect
                    var redirReq = Mapper.Map <RedirectRequest>(req);
                    // This flag IMPLIES the Web flag
                    if (requestType.HasFlag(DataRequestType.Web))
                    {
                        // Get target URL and save
                        redirReq.DestinationUrl = Request.Query.t;
                    }
                    req = redirReq;
                }
                var dataLoggerService = new DataLoggerService(ServerContext);
                // Save data using Logger service, on the thread pool
                var saveDataTask = Task.Factory.StartNew(async() =>
                {
                    await dataLoggerService.SaveLogRequestAsync(req);
                });
                // Custom saving
                if (req is TagRequest)
                {
                    var saveTagTask = Task.Factory.StartNew(async() =>
                    {
                        await dataLoggerService.SaveTagRequestAsync((TagRequest)req);
                    });
                }
            }
        }
コード例 #6
0
        public async void ThirdCase()
        {
            var path = await DataLoggerService.CreateDatabase("db.dat");

            var connection = new SQLite.Net.SQLiteConnection(new SQLitePlatformWinRT(), path);
        }