/// <summary> /// Handle all messages from JSON stream. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected virtual void HandleMessage(object sender, JsonMessageEventArgs args) { try { if (string.IsNullOrWhiteSpace(args.Subject)) { Logger?.LogError($"{GetType().Name}: No message event subject. [thread: {Thread.CurrentThread.ManagedThreadId}]"); return; } // Ignore message events if not subscribed. // ReSharper disable once InconsistentlySynchronizedField if (!Subscribers.TryGetValue(args.Subject, out var subscribers)) { return; // ignore. } NotifySubscribers(subscribers?.ToArray(), args.Subject, args.Json); // Forward stream message event to Publisher Message event observers. OnMessage(args); } catch (OperationCanceledException) { /* ignore */ } catch (Exception e) { Logger?.LogError(e, $"{GetType().Name}: Failed processing JSON message. [thread: {Thread.CurrentThread.ManagedThreadId}]"); } }
public void Properties() { const string json = "{ }"; const string subject = "unit-test"; var args = new JsonMessageEventArgs(json, subject); Assert.Equal(json, args.Json); Assert.Equal(subject, args.Subject); }
private void OnClientMessage(object sender, JsonMessageEventArgs e) { if (!_isDataReceivedLogged) { Logger?.LogDebug($"{GetType().Name}: Buffering JSON data... [thread: {Thread.CurrentThread.ManagedThreadId}]"); _isDataReceivedLogged = true; } _buffer.Post(e.Json); }
protected override void HandleMessage(object sender, JsonMessageEventArgs args) { JsonMessageEventArgsReceived = args; base.HandleMessage(sender, args); }
private void OnClientMessage(object sender, JsonMessageEventArgs e) { _buffer.Post(e.Json); }