Пример #1
0
        /// <inheritdoc/>
        public async Task WriteAsync(IDictionary <string, dynamic> values)
        {
            await _lock.WaitAsync();

            try {
                // Force synchronization and merge in new values
                Sync();
                foreach (var value in values)
                {
                    if (value.Value == null)
                    {
                        _master.Remove(value.Key);
                    }
                    else if (_master.ContainsKey(value.Key))
                    {
                        _master[value.Key] = value.Value;
                    }
                    else
                    {
                        _master.Add(value.Key, value.Value);
                    }
                }
                // Write all to file
                var path = Path.Combine(Path.GetTempPath(), _fileName);
                File.WriteAllText(path, JsonConvertEx.SerializeObjectPretty(_master));
                // Make sure we do not unnecesarily sync
                _updated = true;
            }
            catch (Exception ex) {
                throw new StorageException("Exception writing", ex);
            }
            finally {
                _lock.Release();
            }
        }
Пример #2
0
            /// <inheritdoc/>
            public Task SendEventAsync(byte[] data, string contentType,
                                       string eventSchema, string contentEncoding)
            {
                var json = Encoding.UTF8.GetString(data);
                var o    = JsonConvert.DeserializeObject(json);

                Console.WriteLine(contentType);
                Console.WriteLine(JsonConvertEx.SerializeObjectPretty(o));
                return(Task.CompletedTask);
            }
Пример #3
0
 /// <summary>
 /// Write jobs to file system
 /// </summary>
 /// <returns></returns>
 private Task UpdateFilesystem()
 {
     foreach (var file in Directory.GetFiles(_jobsDirectory))
     {
         File.Delete(file);
     }
     foreach (var job in _jobs)
     {
         var jobFilename = _jobsDirectory.Trim().TrimEnd('/') + "/" + $"{job.Id}.json";
         var json        = JsonConvertEx.SerializeObjectPretty(job);
         File.WriteAllText(jobFilename, json);
     }
     return(Task.CompletedTask);
 }
Пример #4
0
        /// <summary>
        /// Dump all documents using sql
        /// </summary>
        public static async Task DumpCollectionAsync(CliOptions options)
        {
            var collection = await GetDocsAsync(options);

            var queryable = collection.OpenSqlClient();
            var feed      = queryable.Query <dynamic>("select * from root");

            while (feed.HasMore())
            {
                var result = await feed.ReadAsync();

                foreach (var item in result)
                {
                    Console.WriteLine(JsonConvertEx.SerializeObjectPretty(item));
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Publish test messages
        /// </summary>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task PublishAsync(CancellationToken ct)
        {
            _logger.Information("Starting to publish...");
            for (var index = 0; !ct.IsCancellationRequested; index++)
            {
                var message = JsonConvertEx.SerializeObjectPretty(new {
                    GeneratedAt = DateTime.UtcNow,
                    Index       = index
                });
                _logger.Information("Publishing test message {Index}", index);
                await _events.SendAsync(Encoding.UTF8.GetBytes(message),
                                        ContentEncodings.MimeTypeJson);

                if (Interval != TimeSpan.Zero)
                {
                    await Task.Delay(Interval, ct);
                }
            }
            _logger.Information("Publishing complete.");
        }
Пример #6
0
        /// <summary>
        /// Ping continously
        /// </summary>
        private static async Task PingAsync(IIoTHubConfig config, ILogger logger, string deviceId,
                                            string moduleId, CancellationToken ct)
        {
            var client = new IoTHubTwinMethodClient(CreateClient(config, logger), logger);

            logger.Information("Starting echo thread");
            var found = false;

            for (var index = 0; !ct.IsCancellationRequested; index++)
            {
                try {
                    var message = JsonConvertEx.SerializeObjectPretty(new {
                        Index   = index,
                        Started = DateTime.UtcNow
                    });
                    logger.Debug("Sending ECHO {Index}... ", index);
                    var result = await client.CallMethodAsync(deviceId, moduleId,
                                                              "Echo_V1", message, null, ct);

                    found = true;
                    try {
                        var returned = (dynamic)JToken.Parse(result);
                        logger.Debug("... received back ECHO {Index} - took {Passed}.",
                                     returned.Index, DateTime.UtcNow - ((DateTime)returned.Started));
                    }
                    catch (Exception e) {
                        logger.Error(e, "Bad result for ECHO {Index}: {result} ",
                                     index, result);
                    }
                }
                catch (Exception ex) {
                    if (!found && (ex is ResourceNotFoundException))
                    {
                        logger.Debug("Waiting for module to connect...");
                        continue; // Initial startup ...
                    }
                    logger.Information(ex, "Failed to send ECHO {Index}.", index);
                }
            }
            logger.Information("Echo thread completed");
        }
 /// <inheritdoc/>
 public override string ToString() =>
 JsonConvertEx.SerializeObjectPretty(_configuration);