示例#1
0
        /// <summary>
        /// Send Ack Message for CrewUpdateWfmV1
        /// </summary>
        /// <param name="ca"></param>
        public void SendAckMessage(CrewUpdateWfmV1 ca)
        {
            AckNackV1 ack = new AckNackV1();

            ack.IsAck           = true;
            ack.ErrNo           = 0; //no error
            ack.Id              = ca.IncidentId;
            ack.MessageSequence = ca.Sequence;
            ack.Sequence        = _sequence++;

            //optional
            ack.Name = ca.IncidentId;
            ack.AdditionalErrorInformation = ca.ToString();
            crewConnector.SendMessageToIdms(ack);
        }
示例#2
0
        /// <summary>
        /// Send Ack Message for IncidentUpdateWfmV1
        /// </summary>
        /// <param name="incUpdate"></param>
        public void SendAckMessage(IncidentUpdateWfmV1 incUpdate)
        {
            AckNackV1 ack = new AckNackV1();

            //required
            ack.IsAck           = true;
            ack.ErrNo           = 0; //no error
            ack.Id              = incUpdate.IncidentId;
            ack.MessageSequence = incUpdate.Sequence;
            ack.Sequence        = _sequence++;

            //optional
            ack.Name = incUpdate.IncidentName;
            ack.AdditionalErrorInformation = incUpdate.ToString();
            crewConnector.SendMessageToIdms(ack);
        }
示例#3
0
        /// <summary>
        /// This gets called when a message is received from the Crew Server
        /// Based on the type of message, it can be just simply logged, or handled specifically based on the application needs.
        /// </summary>
        /// <param name="msg"></param>
        public void OnMessageFromIdms(NetMessageBase idmsMsg)
        {
            Console.Out.WriteLine("Received message " + idmsMsg.GetType());
            if (idmsMsg.GetType() == typeof(AckNackV1))
            {
                AckNackV1 ack = (AckNackV1)idmsMsg;
                if (ack.IsAck)
                {
                    Console.Out.WriteLine("Ack for message " + ack.MessageSequence);   // log the Ack  message
                }
                else
                {
                    Console.Out.WriteLine("NoAck for message " + ack.MessageSequence);
                }
            }
            else if (idmsMsg.GetType() == typeof(IncidentUpdateWfmV1))
            {
                IncidentUpdateWfmV1 iu = (IncidentUpdateWfmV1)idmsMsg;
                Console.Out.WriteLine("Incident Id=" + iu.IncidentId + ", update type = " + ((eUpdateType)iu.UpdateType).ToString());

                // save the incident details for later reference
                if (!incidentMsgList.ContainsKey(iu.IncidentId))
                {
                    incidentMsgList.Add(iu.IncidentId, iu);
                }
                else
                {
                    incidentMsgList[iu.IncidentId] = iu;
                }

                SendAckMessage(iu);              // Send Ack message
                SendIncidentStatusMessage(iu);   // Send incident status message
            }
            else if (idmsMsg.GetType() == typeof(CrewUpdateWfmV1))
            {
                CrewUpdateWfmV1 ca = (CrewUpdateWfmV1)idmsMsg;
                Console.Out.WriteLine("Incident Id=" + ca.IncidentId + ", crew Id = " + ca.CrewId + ", update type = " + ((eUpdateType)ca.UpdateType).ToString());

                SendAckMessage(ca);             // Send Ack message
                SendCrewEnrouteMessage(ca);     // Send Crew Enrount status message
                SendCrewOnsiteMessage(ca);      // Send Crew Onsite status message
                SendVehicleLocationMessage(ca); // send Vehicle location update message
            }
        }
示例#4
0
        /// <summary>
        /// This gets called when a message is received from the Call Server
        /// Based on the type of message, it can be just simply logged, or handled specifically based on the application needs.
        /// </summary>
        /// <param name="msg"></param>
        public void OnMessageFromIdms(NetMessageBase msg)
        {
            Console.Out.WriteLine("Received message " + msg.GetType());
            MessageCount++;
            if (msg is HelloResponseV1)
            {
                chkHelloDateTime = DateTime.Now;
                HelloResponseV1 r = msg as HelloResponseV1;

                if (r.MySystemId != MessageBaseV1.CALL_SERVER)
                {
                    Console.WriteLine("We are connecting to {0}, not the right server. Disconnecting.", r.MySystemId);
                    callConnector.CloseConnection();
                }
                else if (MessageCount == 10)
                {
                    callConnector.CloseConnection();
                }
            }
            else if (msg is AckNackV1)
            {
                AckNackV1 ack = (AckNackV1)msg;
                if (ack.IsAck)
                {
                    Console.Out.WriteLine("Ack for message " + ack.MessageSequence);
                }
            }
            else if (msg is MeterEventQueryAmiV1)
            {
                createTestLogFile("MeterEventQueryAmiV1 request from call server");
                MeterEventQueryAmiV1 timestmp = (MeterEventQueryAmiV1)msg;
                DateTime             time     = DateTime.Now;
                totime   = time.ToString("yyyyMMddHHmmss");
                fromtime = Convert.ToDateTime(timestmp.FromTimeStamp).ToString("yyyyMMddHHmmss");

                GetMeterEventResponse();
            }
            else if (msg is MeterPingRequestAmiV1)
            {
                createTestLogFile("MeterPingRequestAmiV1 request from call server");
                // process MeterEventQueryAmiV1 here
                MeterPingRequestAmiV1 png      = (MeterPingRequestAmiV1)msg;
                List <MeterIdType>    MeterIds = png.MeterIds;
                createTestLogFile("MeterPingRequestAmiV1 - Total meter requests " + MeterIds.Count);
                if (MeterIds.Count > 0)
                {
                    MeterPingQuery(MeterIds);
                }
            }
            else if (msg is MeterVoltPingReqAmiV1)
            {
                createTestLogFile("MeterVoltPingReqAmiV1 request from call server");
                // process MeterVoltPingAmiV1 here
                MeterVoltPingReqAmiV1 vlt      = (MeterVoltPingReqAmiV1)msg;
                List <MeterIdType>    MeterIds = vlt.MeterIds;
                createTestLogFile("MeterVoltPingReqAmiV1 - Total meter requests " + MeterIds.Count);
                if (MeterIds.Count > 0)
                {
                    MeterVoltEventQuery(MeterIds);
                }
            }

            //section 2 IVR Events
            else if (msg is CallQueryCivV1)
            {
                SendCallQueryResponse();
            }
            //else if (msg is CustomerCorrectionCivV1)
            //{
            //    // process MeterEventQueryAmiV1 here
            //}
            //else if (msg is CaseNoteQueryCivV1)
            //{
            //    // process MeterEventQueryAmiV1 here
            //}
            else
            {
            }
        }