public void Send(WorkloadStatisticsContext wsctx) { if (_workloadContextSender != null) { _workloadContextSender.Send(wsctx); } }
/// <summary> /// not threadsave! 1 socket created by constructor /// http://zguide.zeromq.org/page:all /// - Do not try to use the same socket from multiple threads. /// </summary> /// <param name="wsCtx"></param> public void Send(WorkloadStatisticsContext wsCtx) { var msg = new ZMessage(); msg.Add(new ZFrame(wsCtx.GroupGuid.ToString())); msg.Add(new ZFrame(wsCtx.TaskGuid.ToString())); msg.Add(new ZFrame(wsCtx.ToString())); _pubSocket.Send(msg); }
private void StatisticListenerTask(ZContext ctx) { using (var listener = new ZSocket(ctx, ZSocketType.PAIR)) { listener.Connect("inproc://listener"); //checking each message, if new prefix receives, creating new Taskcomponent, adding while (true) { ZError error; ZMessage msg; if (null == (msg = listener.ReceiveMessage(out error))) { if (error == ZError.ETERM) { return; // Interrupted } throw new ZException(error); } if (msg.Count < 3) { continue; } bool doBreak = false; WorkloadStatisticsContext wlStatCtx; using (var groupFrame = msg[0]) using (var taskFrame = msg[1]) using (var statlogFrame = msg[2]) { Guid groupGuid; doBreak |= !Guid.TryParse(groupFrame.ReadString(), out groupGuid); Guid taskGuid; doBreak |= !Guid.TryParse(taskFrame.ReadString(), out taskGuid); doBreak |= !WorkloadStatisticsContext.TryParse(groupGuid, taskGuid, statlogFrame.ReadString(), out wlStatCtx); } if (doBreak) { continue; } var key = wlStatCtx.GetKey(); UInt64 cnt = _msgContainerByKey.ContainsKey(key) ? _msgContainerByKey[key].NmsReceived + 1L : 1L; var msgContainer = new MsgContainer(wlStatCtx, cnt); if (!_msgContainerByKey.ContainsKey(key)) { _newKeyQueue.Enqueue(key); } _msgContainerByKey[key] = msgContainer; } } }
private void StartDataFeeder(ZContext ctx, Guid guidgroup, Guid guidtask, string scapt, string endpoint, List <CancellationToken> ctlist) { using (var pubsender = new ZSocket(ctx, ZSocketType.PUB)) { pubsender.Connect(endpoint); //"inproc://datafeed"); var rnd = new Random(); while (!ctlist.Any(e => e.IsCancellationRequested)) { var i = rnd.Next(150, 10000); var wsv = new WorkloadStatisticsContext(guidgroup, guidtask, i, i + rnd.Next(-50, 375), i + rnd.Next(-100, 200), i, scapt); var m = wsv.ToString(); ZMessage msg = new ZMessage(); msg.Add(new ZFrame(guidgroup.ToString())); msg.Add(new ZFrame(guidtask.ToString())); msg.Add(new ZFrame(m)); pubsender.SendMessage(msg); Thread.Sleep(rnd.Next(10, 75)); } } }