Skip to content

Commit 5f1b070

Browse files
committed
Added emit peers
1 parent cfe7c26 commit 5f1b070

File tree

6 files changed

+39
-2
lines changed

6 files changed

+39
-2
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
* [Join](#join)
3333
* [NoJoin](#nojoin)
3434
* [Emit](#emit)
35+
* [EmitPeers](#emitpeers)
3536
* [Leave](#leave)
3637
* [Unpack](#unpack)
3738
* [Deserialize](#deserialize)
@@ -398,6 +399,10 @@ Emit an event to the room.
398399
await myRoom.Emit("new-message", "This is a test message!");
399400
```
400401

402+
### EmitPeers
403+
404+
Equal to [Emit](#emit) but to peers only _(no echo back)_.
405+
401406
### Leave
402407
```csharp
403408
public async Task Leave();

ThingsDB/Connector.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,28 @@ internal async Task Emit<T>(Room room, string eventName, T[]? args)
198198
result.RaiseOnErr();
199199
}
200200

201+
internal async Task EmitPeers<T>(Room room, string eventName, T[]? args)
202+
{
203+
int n = args?.Length ?? 0;
204+
object[] emit = new object[3 + n];
205+
emit[0] = room.Scope();
206+
emit[1] = room.Id();
207+
emit[2] = eventName;
208+
for (var i = 0; i < n; i++)
209+
{
210+
#pragma warning disable CS8602 // Dereference of a possibly null reference.
211+
#pragma warning disable CS8601 // Possible null reference assignment.
212+
emit[3 + i] = args[i];
213+
#pragma warning restore CS8601 // Possible null reference assignment.
214+
#pragma warning restore CS8602 // Dereference of a possibly null reference.
215+
}
216+
217+
byte[] data = MessagePackSerializer.Serialize(emit);
218+
Package pkg = new(PackageType.ReqEmitPeers, GetNextPid(), data);
219+
Package result = await EnsureWrite(pkg, DefaultTimeout);
220+
result.RaiseOnErr();
221+
}
222+
201223
internal void SetRoom(Room room)
202224
{
203225
roomLookup[room.Id()] = room;

ThingsDB/PackageType.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ public enum PackageType : byte
1717
ResError = 19, // {error_msg: ..., error_code: x}
1818

1919
ReqPing = 32, // Empty
20-
ReqAuth = 33, // [user, pass] or token
20+
ReqAuth = 33, // [user, pass] or token
2121
ReqQuery = 34, // [scope, code, {variable}]
2222

2323
ReqRun = 37, // [scope, procedure, [[args]/{kw}]
2424
ReqJoin = 38, // [scope, ...room ids]
2525
ReqLeave = 39, // [scope, ...room ids]
2626
ReqEmit = 40, // [scope, room_id, event, ...args]
27+
ReqEmitPeers = 41, // [scope, room_id, event, ...args]
2728
}
2829
}

ThingsDB/Room.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@ public async Task Emit<T>(string eventName, params T[]? args)
124124
{
125125
await Conn.Emit(this, eventName, args);
126126
}
127+
public async Task EmitPeers(string eventName)
128+
{
129+
await EmitPeers<string>(eventName, null);
130+
}
131+
public async Task EmitPeers<T>(string eventName, params T[]? args)
132+
{
133+
await Conn.EmitPeers(this, eventName, args);
134+
}
127135
internal void OnEvent(RoomEvent ev)
128136
{
129137
switch (ev.Tp)

ThingsDB/ThingsDB.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<TargetFramework>net8.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
7-
<Version>1.0.2</Version>
7+
<Version>1.0.3</Version>
88
<Company>Cesbit</Company>
99
<Product>ThingsDB Connector</Product>
1010
<PackageReadmeFile>README.md</PackageReadmeFile>

build.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* Update version in ThingsDB.csproj
55
* Run (From the ThingsDB folder): dotnet pack
66
* Run this script: python build.py <VERSION>
7+
Example python build.py 1.0.3
78
"""
89
import sys
910
import os

0 commit comments

Comments
 (0)