Skip to content
This repository was archived by the owner on Feb 20, 2022. It is now read-only.

Commit 2f1e622

Browse files
committed
Bugfix: wait for async call on subscription (needed for multiple subscription calls to prevent subscriptionId from beeing overwritten)
1 parent 1bfa012 commit 2f1e622

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

unity-project/Assets/Moulin/DDP/ddp/DdpConnection.cs

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -467,18 +467,31 @@ async void Send(string message)
467467
await SendAsync(message);
468468
}
469469

470-
public Subscription Subscribe(string name, params JSONObject[] items) {
471-
Subscription subscription = new Subscription() {
472-
id = "" + subscriptionId++,
473-
name = name,
474-
items = items
475-
};
476-
subscriptions[subscription.id] = subscription;
477-
Send(GetSubscriptionMessage(subscription));
478-
return subscription;
479-
}
470+
public Subscription Subscribe(string name, params JSONObject[] items)
471+
{
472+
Task<Subscription> sub = SubscribeAsync(name, items);
473+
// wait until message has been send
474+
sub.Wait();
475+
return sub.Result;
476+
}
477+
478+
public async Task<Subscription> SubscribeAsync(string name, params JSONObject[] items)
479+
{
480+
Subscription subscription = new Subscription()
481+
{
482+
id = "" + subscriptionId++,
483+
name = name,
484+
items = items
485+
};
486+
lock (subscriptions)
487+
{
488+
subscriptions[subscription.id] = subscription;
489+
}
490+
await SendAsync(GetSubscriptionMessage(subscription));
491+
return subscription;
492+
}
480493

481-
public void Unsubscribe(Subscription subscription) {
494+
public void Unsubscribe(Subscription subscription) {
482495
Send(GetUnsubscriptionMessage(subscription));
483496
}
484497

0 commit comments

Comments
 (0)