public void Send(WorkloadStatisticsContext wsctx)
 {
     if (_workloadContextSender != null)
     {
         _workloadContextSender.Send(wsctx);
     }
 }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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;
                }
            }
        }
Beispiel #4
0
        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));
                }
            }
        }