Skip to content

Commit 74a8c46

Browse files
author
Elad Zelingher
committed
Some bugs regarding client disconnection patches
1 parent de095ac commit 74a8c46

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/net45/WampSharp/WAMP2/V2/Api/CalleeProxy/WampCalleeClientProxyFactory.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,9 @@ private class ClientInvocationHandler : WampCalleeProxyInvocationHandler
2626
private readonly IWampRpcOperationCatalogProxy mCatalogProxy;
2727
private readonly IWampClientConnectionMonitor mMonitor;
2828

29-
private readonly TaskCompletionSource<object> mDisconnectionTaskCompletionSource =
30-
new TaskCompletionSource<object>();
31-
32-
private readonly ManualResetEvent mDisconnectionWaitHandle =
33-
new ManualResetEvent(false);
29+
private TaskCompletionSource<object> mDisconnectionTaskCompletionSource;
30+
31+
private ManualResetEvent mDisconnectionWaitHandle;
3432

3533
private Exception mDisconnectionException;
3634
private readonly CallOptions mEmptyOptions = new CallOptions();
@@ -44,7 +42,10 @@ public ClientInvocationHandler(IWampRpcOperationCatalogProxy catalogProxy,
4442
{
4543
mCatalogProxy = catalogProxy;
4644
mMonitor = monitor;
45+
mDisconnectionTaskCompletionSource = new TaskCompletionSource<object>();
46+
mDisconnectionWaitHandle = new ManualResetEvent(false);
4747

48+
mMonitor.ConnectionEstablished += OnConnectionEstablished;
4849
mMonitor.ConnectionError += OnConnectionError;
4950
mMonitor.ConnectionBroken += OnConnectionBroken;
5051
}
@@ -53,6 +54,12 @@ public ClientInvocationHandler(IWampRpcOperationCatalogProxy catalogProxy,
5354

5455
#region Private Methods
5556

57+
private void OnConnectionEstablished(object sender, WampSessionEventArgs e)
58+
{
59+
mDisconnectionTaskCompletionSource = new TaskCompletionSource<object>();
60+
mDisconnectionWaitHandle = new ManualResetEvent(false);
61+
}
62+
5663
private void OnConnectionBroken(object sender, WampSessionCloseEventArgs e)
5764
{
5865
Exception exception = new WampConnectionBrokenException(e);
@@ -68,7 +75,7 @@ private void OnConnectionError(object sender, WampConnectionErrorEventArgs e)
6875
private void SetException(Exception exception)
6976
{
7077
mDisconnectionException = exception;
71-
mDisconnectionTaskCompletionSource.SetException(exception);
78+
mDisconnectionTaskCompletionSource.TrySetException(exception);
7279
mDisconnectionWaitHandle.Set();
7380
}
7481

src/net45/WampSharp/WAMP2/V2/Client/PubSub/WampPublisher.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ public WampPublisher(IWampServerProxy proxy, IWampFormatter<TMessage> formatter,
5454

5555
long requestId = mPendingPublication.Add(publication);
5656

57+
publication.RequestId = requestId;
58+
5759
publicationAction(requestId);
5860

5961
bool acknowledge = options.Acknowledge ?? false;

0 commit comments

Comments
 (0)