private void Device_OnPacketArrival(object sender, CaptureEventArgs e) { var time = e.Packet.Timeval.Date; var len = e.Packet.Data.Length; OpcPacket packet = new OpcPacket().Parse(e.Packet); if (packet != null) { Log.Information("OPC Packet Transfer. ID: {0} Type: {1} Direction: {2}", packet.SecuritySequenceNumber, packet.OpcMessage.ToString(), packet.Direction); if (ResponseToRequest(packet)) { var diff = packet.Time - lastPacket.Time; if (diff > 100000) { return; } OpcConversation conv = new OpcConversation(lastPacket, packet); Prom.UpdateMetrics(conv); } lastPacket = packet; } }
public void UpdateMetrics(OpcConversation conv) { string measurement = conv.GetMessageType().ToString(); ulong timedifference = conv.CalculateTimeDifference(); long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); switch (conv.GetMessageType()) { case OpcMessageType.ReadResponse: ReadRequest.Set(timedifference); break; case OpcMessageType.BrowseResponse: BrowseRequest.Set(timedifference); break; case OpcMessageType.CallResponse: CallRequest.Set(timedifference); break; } ReadRequest.Set(timedifference); }