internal override async Task <TT> PublishTwinAsync <TT>(string name, TT typeTwin) { var twin = typeTwin.GetTwin(); var newTwin = await _registryManager.UpdateTwinAsync(_deviceId, Name, twin, twin.ETag); return(TypeTwin.CreateTwin <TT>(name, newTwin)); }
internal virtual async Task <T> GetTwinAsync <T>(string name) where T : TypeTwin, new() { var twin = await _ioTHubModuleClient.GetTwinAsync(); return(TypeTwin.CreateTwin <T>(name, twin)); }
internal override async Task <TT> GetTwinAsync <TT>(string name) { var twin = await _registryManager.GetTwinAsync(_deviceId, Name); var typeTwin = TypeTwin.CreateTwin <TT>(name, twin); return(typeTwin); }
private async Task PropertyHandler(TwinCollection desiredProperties, object userContext) { Logger.LogInformation("PropertyHandler called"); if (!(userContext is Dictionary <string, SubscriptionCallback> callbacks)) { throw new InvalidOperationException("UserContext doesn't contain a valid SubscriptionCallback"); } Logger.LogInformation("Desired property change:"); Logger.LogInformation(JsonConvert.SerializeObject(desiredProperties)); foreach (var callback in callbacks) { if (desiredProperties.Contains($"___{callback.Key}")) { var input = TypeTwin.CreateTwin(callback.Value.Type, callback.Key, desiredProperties); var invocationResult = callback.Value.Handler.DynamicInvoke(input); await(Task <TwinResult>) invocationResult; } } }