DeviceBridge/Services/BridgeService.cs (35 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Azure.Devices.Shared;
using NLog;
namespace DeviceBridge.Services
{
public class BridgeService : IBridgeService
{
private readonly IConnectionManager _connectionManager;
public BridgeService(IConnectionManager connectionManager)
{
_connectionManager = connectionManager;
}
public async Task SendTelemetry(Logger logger, string deviceId, IDictionary<string, object> payload, CancellationToken cancellationToken, IDictionary<string, string> properties = null, string componentName = null, DateTime? creationTimeUtc = null)
{
logger.Info("Sending telemetry for device {deviceId}", deviceId);
await _connectionManager.AssertDeviceConnectionOpenAsync(deviceId, true /* temporary */, cancellationToken);
await _connectionManager.SendEventAsync(logger, deviceId, payload, cancellationToken, properties, componentName, creationTimeUtc);
}
public async Task<Twin> GetTwin(Logger logger, string deviceId, CancellationToken cancellationToken)
{
logger.Info("Getting twin for device {deviceId}", deviceId);
await _connectionManager.AssertDeviceConnectionOpenAsync(deviceId, true /* temporary */, cancellationToken);
return await _connectionManager.GetTwinAsync(logger, deviceId, cancellationToken);
}
public async Task UpdateReportedProperties(Logger logger, string deviceId, IDictionary<string, object> patch, CancellationToken cancellationToken)
{
logger.Info("Updating reported properties for device {deviceId}", deviceId);
await _connectionManager.AssertDeviceConnectionOpenAsync(deviceId, true /* temporary */, cancellationToken);
await _connectionManager.UpdateReportedPropertiesAsync(logger, deviceId, patch, cancellationToken);
}
}
}