public async Task OnMessage(SignalServiceMessagePipeMessage message) { Logger.LogTrace("OnMessage() locking"); await SignalLibHandle.Instance.SemaphoreSlim.WaitAsync(Token); Logger.LogTrace("OnMessage() locked"); try { if (message is SignalServiceEnvelope envelope) { List <SignalMessage> messages = new List <SignalMessage>(); if (envelope.IsReceipt()) { SignalMessage update = SignalDBContext.IncreaseReceiptCountLocked(envelope); if (update != null) { await SignalLibHandle.Instance.DispatchMessageUpdate(update); } } else if (envelope.IsPreKeySignalMessage() || envelope.IsSignalMessage()) { await HandleMessage(envelope); } else { Logger.LogWarning("OnMessage() could not handle unknown message type {0}", envelope.GetEnvelopeType()); } } else if (message is SignalServiceMessagePipeEmptyMessage) { SignalLibHandle.Instance.DispatchPipeEmptyMessage(); } } catch (Exception e) { Logger.LogError("OnMessage failed: {0}\n{1}", e.Message, e.StackTrace); if (e.InnerException != null) { Logger.LogError("InnerException: {0}\n{1}", e.InnerException.Message, e.InnerException.StackTrace); } } finally { SignalLibHandle.Instance.SemaphoreSlim.Release(); Logger.LogTrace("OnMessage() released"); } }
public void OnMessage(SignalServiceMessagePipeMessage message) { if (message is SignalServiceEnvelope) { SignalServiceEnvelope envelope = (SignalServiceEnvelope)message; List <SignalMessage> messages = new List <SignalMessage>(); if (envelope.isReceipt()) { SignalDBContext.IncreaseReceiptCountLocked(envelope, this); } else if (envelope.isPreKeySignalMessage() || envelope.isSignalMessage()) { HandleMessage(envelope); } else { Debug.WriteLine("received message of unknown type " + envelope.getType() + " from " + envelope.getSource()); } } }
public void OnMessage(SignalServiceMessagePipeMessage message) { Logger.LogTrace("OnMessage() locking"); Handle.SemaphoreSlim.Wait(); Logger.LogTrace("OnMessage() locked"); try { if (message is SignalServiceEnvelope envelope) { List <SignalMessage> messages = new List <SignalMessage>(); if (envelope.isReceipt()) { SignalMessage update = SignalDBContext.IncreaseReceiptCountLocked(envelope); if (update != null) { Handle.DispatchMessageUpdate(update); } } else if (envelope.isPreKeySignalMessage() || envelope.isSignalMessage()) { HandleMessage(envelope); } else { Logger.LogWarning("OnMessage() could not handle unknown message type {0}", envelope.getType()); } } else if (message is SignalServiceMessagePipeEmptyMessage) { Handle.DispatchPipeEmptyMessage(); } } finally { Handle.SemaphoreSlim.Release(); Logger.LogTrace("OnMessage() released"); } }