static string ProtoMessageToString(ProtoMessage msg)
        {
            if (!msg.HasPayload)
            {
                return("ERROR in ProtoMessage: Corrupted execution event, no payload found");
            }
            var _str = "ProtoMessage{";

            switch ((ProtoPayloadType)msg.PayloadType)
            {
            case ProtoPayloadType.PROTO_MESSAGE:
                var _msg = ProtoMessage.CreateBuilder().MergeFrom(msg.Payload).Build();
                _str += ProtoMessageToString(_msg);
                break;

            case ProtoPayloadType.HEARTBEAT_EVENT:
                var _hb = ProtoHeartbeatEvent.CreateBuilder().MergeFrom(msg.Payload).Build();
                _str += "Heartbeat";
                break;

            case ProtoPayloadType.ERROR_RES:
                var _err = ProtoErrorRes.CreateBuilder().MergeFrom(msg.Payload).Build();
                _str += "ErrorResponse{errorCode:" + _err.ErrorCode + (_err.HasDescription ? ", description:" + _err.Description : "") + "}";
                break;

            default:
                _str += OpenApiMessageToString(msg);
                break;
            }

            _str += (msg.HasClientMsgId ? ", clientMsgId:" + msg.ClientMsgId : "") + "}";

            return(_str);
        }
示例#2
0
        private void Process_Heartbeat_Event()
        {
            ProtoHeartbeatEvent args = Serializer.Deserialize <ProtoHeartbeatEvent>(_processorMemoryStream);

            Log.Info("ProtoHeartbeatEventRes");

            Send(Heartbeat());

            OnHeartbeatEventReceived?.Invoke(args);
        }
        private static ProtoMessage Heartbeat()
        {
            ProtoHeartbeatEvent message = new ProtoHeartbeatEvent
            {
                payloadType = ProtoPayloadType.HeartbeatEvent
            };

            Log.Info("ProtoHeartbeatEventReq");

            InnerMemoryStream.SetLength(0);
            Serializer.Serialize(InnerMemoryStream, message);

            return(Encode((uint)message.payloadType, InnerMemoryStream.ToArray()));
        }
示例#4
0
        private void StartSendingHeartbeats()
        {
            CheckIsDisposed();

            SendingHeartbeatsStatus = ProcessStatus.WaitingToRun;

            var heartbeatTimer = new Timer(1000)
            {
                AutoReset = false
            };

            var heartbeatEvent = new ProtoHeartbeatEvent();

            heartbeatTimer.Elapsed += async(sender, e) =>
            {
                try
                {
                    if (SendingHeartbeatsStatus == ProcessStatus.Running && IsConnected)
                    {
                        if (DateTime.Now - LastSentMessageTime >= TimeSpan.FromSeconds(10))
                        {
                            await SendMessage(heartbeatEvent, ProtoPayloadType.HeartbeatEvent).ConfigureAwait(false);
                        }

                        ((Timer)sender).Start();
                    }
                    else
                    {
                        SendingHeartbeatsStatus = ProcessStatus.Stopped;
                    }
                }
                catch (Exception ex)
                {
                    SendingHeartbeatsStatus = ProcessStatus.Error;

                    Streams.OnHeartbeatSendingException(ex);

                    if (!Streams.HeartbeatSendingExceptionStream.Observers.Any())
                    {
                        throw;
                    }
                }
            };

            SendingHeartbeatsStatus = ProcessStatus.Running;

            heartbeatTimer.Start();
        }
        static string ProtoMessageToString(ProtoMessage msg)
        {
            if (!msg.HasPayload)
            {
                return("ERROR in ProtoMessage: Corrupted execution event, no payload found");
            }
            var _str = "ProtoMessage{";

            switch ((ProtoPayloadType)msg.PayloadType)
            {
            //case ProtoPayloadType.PROTO_MESSAGE: // FIXME - was this working?
            //    var _msg = ProtoMessage.CreateBuilder().MergeFrom(msg.Payload).Build();
            //    _str += ProtoMessageToString(_msg);
            //    break;
            case ProtoPayloadType.PING_REQ:
                var _ping_req = ProtoPingReq.CreateBuilder().MergeFrom(msg.Payload).Build();
                _str += "PingRequest{timestamp:" + _ping_req.Timestamp.ToString() + "}";
                break;

            case ProtoPayloadType.PING_RES:
                var _ping_res = ProtoPingRes.CreateBuilder().MergeFrom(msg.Payload).Build();
                _str += "PingResponse{timestamp:" + _ping_res.Timestamp + "}";
                break;

            case ProtoPayloadType.HEARTBEAT_EVENT:
                var _hb = ProtoHeartbeatEvent.CreateBuilder().MergeFrom(msg.Payload).Build();
                _str += "Heartbeat";
                break;

            case ProtoPayloadType.ERROR_RES:
                var _err = ProtoErrorRes.CreateBuilder().MergeFrom(msg.Payload).Build();
                _str += "ErrorResponse{errorCode:" + _err.ErrorCode + (_err.HasDescription ? ", description:" + _err.Description : "") + "}";
                break;

            default:
                _str += OpenApiMessageToString(msg);
                break;
            }
            _str += (msg.HasClientMsgId ? ", clientMsgId:" + msg.ClientMsgId : "")
                    //+ (msg.HasPayloadString ? ", payloadString:" + msg.PayloadString : "")  // FIXME - was this working?
                    + "}";

            return(_str);
        }
 //public ProtoOAPingReq GetPingRequest(byte[] msg = null)
 //{
 //    return ProtoOAPingReq.CreateBuilder().MergeFrom(GetPayload(msg)).Build();
 //}
 //public ProtoOAPingRes GetPingResponse(byte[] msg = null)
 //{
 //    return ProtoOAPingRes.CreateBuilder().MergeFrom(GetPayload(msg)).Build();
 //}
 public ProtoHeartbeatEvent GetHeartbeatEvent(byte[] msg = null)
 {
     return(ProtoHeartbeatEvent.CreateBuilder().MergeFrom(GetPayload(msg)).Build());
 }
 public ProtoMessage CreateHeartbeatEvent(string clientMsgId = null)
 {
     return(CreateMessage((uint)ProtoPayloadType.HEARTBEAT_EVENT, ProtoHeartbeatEvent.CreateBuilder().Build().ToByteString(), clientMsgId));
 }
        public ProtoMessage CreateHeartbeatEvent(string clientMsgId = null)
        {
            ProtoHeartbeatEvent _msg = new ProtoHeartbeatEvent();

            return(CreateMessage((uint)ProtoPayloadType.HEARTBEAT_EVENT, Utils.Serialize <ProtoHeartbeatEvent>(_msg), clientMsgId));
        }