예제 #1
0
        private async Task SendDataToEventHub(StationObservation[] observations)
        {
            EventData eventData;

            using (var memoryStream = new MemoryStream())
                using (var streamWriter = new StreamWriter(memoryStream))
                {
                    JsonUtils.WriteJson(streamWriter, observations);
                    await streamWriter.FlushAsync();

                    await memoryStream.FlushAsync();

                    eventData = new EventData(memoryStream.ToArray());
                }

            await _eventHubClient.SendAsync(eventData);
        }
예제 #2
0
        private async Task CacheSearchAddressReverseAsync(string key, Address address)
        {
            if (address != null)
            {
                using (var stringWriter = new StringWriter())
                {
                    JsonUtils.WriteJson(stringWriter, address);
                    stringWriter.Flush();

                    TableOperation replaceOperation = TableOperation.InsertOrMerge(
                        new CacheEntry(SearchAddressReversePartitionKey, key, stringWriter.GetStringBuilder().ToString()));

                    await _cacheCloudTable.ExecuteAsync(replaceOperation);
                }
            }
            else
            {
                await AzureUtils.DeleteTableRowIfExistsAsync(_cacheCloudTable, SearchAddressReversePartitionKey, key);
            }
        }
예제 #3
0
        public async Task <string> GenerateReferenceDataJsonAsync()
        {
            if (Stations.Length == 0)
            {
                Logger.TraceLine($"GenerateReferenceData: Stations not loaded, reference data generation skipped");
            }

            var instances = new List <List <TimeSeriesInstance> >();

            await ProcessStationsInBatches(
                async stationsBatch =>
            {
                var batchInstances = new List <TimeSeriesInstance>();
                instances.Add(batchInstances);
                batchInstances.AddRange(await ConvertStationsToTimeSeriesInstancesAsync(stationsBatch));
            });

            Dictionary <string, string>[] referenceDataItems =
                instances.SelectMany(batch => batch)
                .Select(
                    instance =>
            {
                var referenceDataItem            = new Dictionary <string, string>(instance.InstanceFields);
                referenceDataItem["StationId"]   = (string)instance.TimeSeriesId.Single();
                referenceDataItem["Name"]        = instance.Name;
                referenceDataItem["Description"] = instance.Description;
                return(referenceDataItem);
            })
                .ToArray();

            using (var stringWriter = new StringWriter())
            {
                JsonUtils.WriteJson(stringWriter, referenceDataItems);
                stringWriter.Flush();
                return(stringWriter.ToString());
            }
        }
예제 #4
0
 private static void WritePutTimeSeriesInstancesRequest(TextWriter textWriter, TimeSeriesInstance[] instances)
 {
     JsonUtils.WriteJson(textWriter, new PutTimeSeriesInstancesRequest(instances));
 }
예제 #5
0
 private static void WritePutTimeSeriesHierarchiesRequest(TextWriter textWriter, TimeSeriesHierarchy[] hierarchies)
 {
     JsonUtils.WriteJson(textWriter, new PutTimeSeriesHierarchiesRequest(hierarchies));
 }
예제 #6
0
 private static void WritePutTimeSeriesTypesRequest(TextWriter textWriter, TimeSeriesType[] types)
 {
     JsonUtils.WriteJson(textWriter, new PutTimeSeriesTypesRequest(types));
 }