private static string RebootRequestStatusString(RebootRequestStatus status) { switch (status) { case RebootRequestStatus.Allowed: return("allowed"); case RebootRequestStatus.Disabled: return("disabled"); case RebootRequestStatus.InActiveHours: return("inActiveHours"); case RebootRequestStatus.RejectedByApp: return("rejectedByApp"); } return(status.ToString()); }
public async Task ImmediateRebootAsync(string rebootCmdTime) { RebootRequestStatus rebootRequestStatus = await IsRebootAllowedByApp(); // Report to the device twin ReportImmediateRebootStatus(rebootRequestStatus, rebootCmdTime); if (rebootRequestStatus != RebootRequestStatus.Allowed) { return; } var request = new Message.ImmediateRebootRequest(); request.lastRebootCmdTime = rebootCmdTime; await this._systemConfiguratorProxy.SendCommandAsync(request); }
private void ReportImmediateRebootStatus(RebootRequestStatus rebootRequestStatus, string rebootCmdTime) { Dictionary <string, object> collection = new Dictionary <string, object>(); collection["microsoft"] = new { management = new { rebootInfo = new { lastRebootCmdTime = rebootCmdTime, lastRebootCmdStatus = (rebootRequestStatus == RebootRequestStatus.Allowed ? "accepted" : RebootRequestStatusString(rebootRequestStatus)) } } }; _deviceTwin.ReportProperties(collection); }
private async Task <string> ImmediateRebootMethodHandlerAsync(string jsonParam) { string rebootCmdTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"); RebootRequestStatus rebootRequestStatus = await IsRebootAllowedBySystem(); if (rebootRequestStatus != RebootRequestStatus.Allowed) { // Report to the device twin ReportImmediateRebootStatus(rebootRequestStatus, rebootCmdTime); // Return details in the method return payload return(JsonConvert.SerializeObject(new { response = RebootRequestStatusString(rebootRequestStatus) })); } // Start the reboot operation asynchrnously, which may or may not succeed this.ImmediateRebootAsync(rebootCmdTime); return(JsonConvert.SerializeObject(new { response = "accepted" })); }