public override Task <BulkRegistryOperationResult> AddDeviceWithTwinAsync(Device device, Twin twin, CancellationToken cancellationToken)
        {
            ValidateDeviceId(device);
            if (!string.IsNullOrWhiteSpace(device.ETag))
            {
                throw new ArgumentException(ApiResources.ETagSetWhileRegisteringDevice);
            }
            var exportImportDeviceList = new List <ExportImportDevice>(1);

            var exportImportDevice = new ExportImportDevice(device, ImportMode.Create);

            exportImportDevice.Tags       = twin?.Tags;
            exportImportDevice.Properties = new ExportImportDevice.PropertyContainer();
            exportImportDevice.Properties.DesiredProperties  = twin?.Properties.Desired;
            exportImportDevice.Properties.ReportedProperties = twin?.Properties.Reported;

            exportImportDeviceList.Add(exportImportDevice);

            return(this.BulkDeviceOperationsAsync <BulkRegistryOperationResult>(
                       exportImportDeviceList,
                       ClientApiVersionHelper.ApiVersionQueryString,
                       cancellationToken));
        }
 public override Task <Twin> UpdateTwinAsync(string deviceId, Twin twinPatch, string etag)
 {
     return(this.UpdateTwinAsync(deviceId, twinPatch, etag, CancellationToken.None));
 }
Пример #3
0
 public override Task <Twin> ReplaceTwinAsync(string deviceId, Twin newTwin, string etag, CancellationToken cancellationToken)
 {
     return(this.UpdateTwinInternalAsync(deviceId, newTwin, etag, cancellationToken, true));
 }
 public override Task <BulkRegistryOperationResult> AddDeviceWithTwinAsync(Device device, Twin twin)
 {
     return(AddDeviceWithTwinAsync(device, twin, CancellationToken.None));
 }
Пример #5
0
 public override Task <Twin> UpdateTwinAsync(string deviceId, Twin twinPatch, string etag, CancellationToken cancellationToken)
 {
     return(this.UpdateTwinInternalAsync(deviceId, twinPatch, etag, cancellationToken, false));
 }
Пример #6
0
 public override Task <Twin> ReplaceTwinAsync(string deviceId, Twin newTwin, string etag)
 {
     return(this.ReplaceTwinAsync(deviceId, newTwin, etag, CancellationToken.None));
 }
Пример #7
0
 /// <summary>
 /// Updates the mutable fields of <see cref="Twin"/>
 /// </summary>
 /// <param name="deviceId">Device Id</param>
 /// <param name="twinPatch">Twin with updated fields</param>
 /// <param name="etag">Twin's etag</param>
 /// <returns>Updated Twin instance</returns>
 public abstract Task <Twin> UpdateTwinAsync(string deviceId, Twin twinPatch, string etag);
Пример #8
0
 /// <summary>
 /// Updates the mutable fields of <see cref="Twin"/>
 /// </summary>
 /// <param name="deviceId">Device Id</param>
 /// <param name="twinPatch">Twin with updated fields</param>
 /// <param name="etag">Twin's etag</param>
 /// <param name="cancellationToken">Cancellation token</param>
 /// <returns>Updated Twin instance</returns>
 public abstract Task <Twin> UpdateTwinAsync(string deviceId, Twin twinPatch, string etag, CancellationToken cancellationToken);
Пример #9
0
        public override Task <JobResponse> ScheduleTwinUpdateAsync(string jobId, IEnumerable <string> deviceIds, Twin twin, DateTime startTimeUtc,
                                                                   long maxExecutionTimeInSeconds, CancellationToken cancellationToken)
        {
            this.EnsureInstanceNotClosed();

            var jobRequest = new JobRequest()
            {
                JobId      = jobId,
                JobType    = JobType.ScheduleUpdateTwin,
                UpdateTwin = twin,
                DeviceIds  = deviceIds,
                StartTime  = startTimeUtc,
                MaxExecutionTimeInSeconds = maxExecutionTimeInSeconds
            };

            return(this.CreateJobAsync(jobRequest, cancellationToken));
        }
Пример #10
0
 public override Task <JobResponse> ScheduleTwinUpdateAsync(string jobId, IEnumerable <string> deviceIds, Twin twin, DateTime startTimeUtc, long maxExecutionTimeInSecondsL)
 {
     return(this.ScheduleTwinUpdateAsync(jobId, deviceIds, twin, startTimeUtc, maxExecutionTimeInSecondsL, CancellationToken.None));
 }
Пример #11
0
        /// <summary>
        /// Creates a new Job to update twin tags and desired properties on one or multiple devices
        /// </summary>
        /// <param name="jobId">Unique Job Id for this job</param>
        /// <param name="queryCondition">Query condition to evaluate which devices to run the job on</param>
        /// <param name="twin">Twin object to use for the update</param>
        /// <param name="startTimeUtc">Date time in Utc to start the job</param>
        /// <param name="maxExecutionTimeInSeconds">Max execution time in seconds, i.e., ttl duration the job can run</param>
        /// <param name="cancellationToken">Task cancellation token</param>
        /// <returns>A JobResponse object</returns>
        public virtual Task <JobResponse> ScheduleTwinUpdateAsync(string jobId, string queryCondition, Twin twin, DateTime startTimeUtc, long maxExecutionTimeInSeconds, CancellationToken cancellationToken)
        {
            EnsureInstanceNotClosed();

            var jobRequest = new JobRequest
            {
                JobId                     = jobId,
                JobType                   = JobType.ScheduleUpdateTwin,
                UpdateTwin                = twin,
                QueryCondition            = queryCondition,
                StartTime                 = startTimeUtc,
                MaxExecutionTimeInSeconds = maxExecutionTimeInSeconds
            };

            return(CreateJobAsync(jobRequest, cancellationToken));
        }
Пример #12
0
 /// <summary>
 /// Creates a new Job to update twin tags and desired properties on one or multiple devices
 /// </summary>
 /// <param name="jobId">Unique Job Id for this job</param>
 /// <param name="queryCondition">Query condition to evaluate which devices to run the job on</param>
 /// <param name="twin">Twin object to use for the update</param>
 /// <param name="startTimeUtc">Date time in Utc to start the job</param>
 /// <param name="maxExecutionTimeInSeconds">Max execution time in seconds, i.e., ttl duration the job can run</param>
 /// <returns>A JobResponse object</returns>
 public virtual Task <JobResponse> ScheduleTwinUpdateAsync(string jobId, string queryCondition, Twin twin, DateTime startTimeUtc, long maxExecutionTimeInSeconds)
 {
     return(ScheduleTwinUpdateAsync(jobId, queryCondition, twin, startTimeUtc, maxExecutionTimeInSeconds, CancellationToken.None));
 }
 /// <summary>
 /// Creates a new Job to update twin tags and desired properties on one or multiple devices
 /// </summary>
 /// <param name="jobId">Unique Job Id for this job</param>
 /// <param name="queryCondition">Query condition to evaluate which devices to run the job on</param>
 /// <param name="twin">Twin object to use for the update</param>
 /// <param name="startTimeUtc">Date time in Utc to start the job</param>
 /// <param name="maxExecutionTimeInSeconds">Max execution time in seconds, i.e., ttl duration the job can run</param>
 /// <param name="cancellationToken">Task cancellation token</param>
 /// <returns>A JobResponse object</returns>
 public abstract Task <JobResponse> ScheduleTwinUpdateAsync(string jobId, string queryCondition, Twin twin, DateTime startTimeUtc, long maxExecutionTimeInSeconds, CancellationToken cancellationToken);