Skip to content

Commit e0f0a13

Browse files
committed
Add cancellation tokens for characteristic read/write
1 parent a116c99 commit e0f0a13

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

HomeKitDotNet/Models/BinaryCharacteristic.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,22 @@ protected BinaryCharacteristic(Service service, CharacteristicJSON json) : base(
1313
LastValue = MapValue(json.Value);
1414
}
1515

16-
protected async Task<bool> Write(byte[] value)
16+
protected async Task<bool> Write(byte[] value, CancellationToken token = default)
1717
{
1818
if (!CanWrite)
1919
throw new InvalidOperationException("Writing is prohibited");
2020
CharacteristicValueJSON write = new CharacteristicValueJSON(service.Accessory.ID, InstanceID);
2121
write.Value = JsonSerializer.SerializeToElement(Convert.ToBase64String(value));
2222
Dictionary<string, CharacteristicValueJSON[]> dict = new Dictionary<string, CharacteristicValueJSON[]>();
2323
dict.Add("characteristics", [write]);
24-
return (await service.Accessory.EndPoint.Connection.Put("/characteristics", JsonSerializer.SerializeToUtf8Bytes(dict))).StatusCode == System.Net.HttpStatusCode.NoContent;
24+
return (await service.Accessory.EndPoint.Connection.Put("/characteristics", JsonSerializer.SerializeToUtf8Bytes(dict), token)).StatusCode == System.Net.HttpStatusCode.NoContent;
2525
}
2626

27-
protected async Task<byte[]> Read()
27+
protected async Task<byte[]> Read(CancellationToken token = default)
2828
{
2929
if (!CanRead)
3030
throw new InvalidOperationException("Reading is prohibited");
31-
HttpResponseMessage msg = await service.Accessory.EndPoint.Connection.Get($"/characteristics?id={service.Accessory.ID}.{InstanceID}");
31+
HttpResponseMessage msg = await service.Accessory.EndPoint.Connection.Get($"/characteristics?id={service.Accessory.ID}.{InstanceID}", token);
3232
if (!msg.IsSuccessStatusCode)
3333
return Array.Empty<byte>();
3434
CharacteristicsJSON? chars = JsonSerializer.Deserialize<CharacteristicsJSON>(msg.Content.ReadAsStream());

HomeKitDotNet/Models/Characteristic.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,22 @@ protected Characteristic(Service service, CharacteristicJSON json) : base(servic
2424
this.LastValue = MapValue(json.Value);
2525
}
2626

27-
protected async Task<bool> Write(T value)
27+
protected async Task<bool> Write(T value, CancellationToken token = default)
2828
{
2929
if (!CanWrite)
3030
throw new InvalidOperationException("Writing is prohibited");
3131
CharacteristicValueJSON write = new CharacteristicValueJSON(service.Accessory.ID, InstanceID);
3232
write.Value = JsonSerializer.SerializeToElement(value);
3333
Dictionary<string, CharacteristicValueJSON[]> dict = new Dictionary<string, CharacteristicValueJSON[]>();
3434
dict.Add("characteristics", [write]);
35-
return (await service.Accessory.EndPoint.Connection.Put("/characteristics", JsonSerializer.SerializeToUtf8Bytes(dict))).StatusCode == System.Net.HttpStatusCode.NoContent;
35+
return (await service.Accessory.EndPoint.Connection.Put("/characteristics", JsonSerializer.SerializeToUtf8Bytes(dict), token)).StatusCode == System.Net.HttpStatusCode.NoContent;
3636
}
3737

38-
protected async Task<T?> Read()
38+
protected async Task<T?> Read(CancellationToken token = default)
3939
{
4040
if (!CanRead)
4141
throw new InvalidOperationException("Reading is prohibited");
42-
HttpResponseMessage msg = await service.Accessory.EndPoint.Connection.Get($"/characteristics?id={service.Accessory.ID}.{InstanceID}");
42+
HttpResponseMessage msg = await service.Accessory.EndPoint.Connection.Get($"/characteristics?id={service.Accessory.ID}.{InstanceID}", token);
4343
if (!msg.IsSuccessStatusCode)
4444
return null;
4545
CharacteristicsJSON? chars = JsonSerializer.Deserialize<CharacteristicsJSON>(msg.Content.ReadAsStream());

HomeKitDotNet/Models/CharacteristicBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ public CharacteristicBase(Service service, CharacteristicJSON json)
1515
this.service = service;
1616
}
1717

18-
protected async Task<bool> Events(bool subscribe)
18+
protected async Task<bool> Events(bool subscribe, CancellationToken token = default)
1919
{
2020
if (!CanSubscribe)
2121
throw new InvalidOperationException("Subscriptions are prohibited");
2222
CharacteristicNotificationsJSON write = new CharacteristicNotificationsJSON(service.Accessory.ID, InstanceID);
2323
write.EventNotifications = subscribe;
2424
Dictionary<string, CharacteristicNotificationsJSON[]> dict = new Dictionary<string, CharacteristicNotificationsJSON[]>();
2525
dict.Add("characteristics", [write]);
26-
return (await service.Accessory.EndPoint.Connection.Put("/characteristics", JsonSerializer.SerializeToUtf8Bytes(dict))).StatusCode == System.Net.HttpStatusCode.NoContent;
26+
return (await service.Accessory.EndPoint.Connection.Put("/characteristics", JsonSerializer.SerializeToUtf8Bytes(dict), token)).StatusCode == System.Net.HttpStatusCode.NoContent;
2727
}
2828

2929
internal abstract void FireUpdate(JsonElement? value);

HomeKitDotNet/Models/StringCharacteristic.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,22 @@ protected StringCharacteristic(Service service, CharacteristicJSON json) : base(
1212
LastValue = MapValue(json.Value);
1313
}
1414

15-
protected async Task<bool> Write(string value)
15+
protected async Task<bool> Write(string value, CancellationToken token = default)
1616
{
1717
if (!CanWrite)
1818
throw new InvalidOperationException("Writing is prohibited");
1919
CharacteristicValueJSON write = new CharacteristicValueJSON(service.Accessory.ID, InstanceID);
2020
write.Value = JsonSerializer.SerializeToElement(value);
2121
Dictionary<string, CharacteristicValueJSON[]> dict = new Dictionary<string, CharacteristicValueJSON[]>();
2222
dict.Add("characteristics", [write]);
23-
return (await service.Accessory.EndPoint.Connection.Put("/characteristics", JsonSerializer.SerializeToUtf8Bytes(dict))).StatusCode == System.Net.HttpStatusCode.NoContent;
23+
return (await service.Accessory.EndPoint.Connection.Put("/characteristics", JsonSerializer.SerializeToUtf8Bytes(dict), token)).StatusCode == System.Net.HttpStatusCode.NoContent;
2424
}
2525

26-
protected async Task<string?> Read()
26+
protected async Task<string?> Read(CancellationToken token = default)
2727
{
2828
if (!CanRead)
2929
throw new InvalidOperationException("Reading is prohibited");
30-
HttpResponseMessage msg = await service.Accessory.EndPoint.Connection.Get($"/characteristics?id={service.Accessory.ID}.{InstanceID}");
30+
HttpResponseMessage msg = await service.Accessory.EndPoint.Connection.Get($"/characteristics?id={service.Accessory.ID}.{InstanceID}", token);
3131
if (!msg.IsSuccessStatusCode)
3232
return null;
3333
CharacteristicsJSON? chars = JsonSerializer.Deserialize<CharacteristicsJSON>(msg.Content.ReadAsStream());

0 commit comments

Comments
 (0)