/// <summary> /// Event handler for the NewWindow event. /// </summary> /// <param name="sender">Events Service</param> /// <param name="e">The NewWindow event args</param> private void JetstreamService_NewWindow(object sender, NewWindowEventArgs e) { // lock so we process all events in order lock (_newWindowLock) { foreach (TersoSolutions.Jetstream.SDK.Application.Messages.JetstreamEvent m in e.Messages) { try { Debug.WriteLine("Jetstream Message: " + m.EventType); // now we can deserialize the XML message into the appropriate message switch (m.EventType.Trim().ToLower()) { case "aggregateevent": { AE.Jetstream message = (AE.Jetstream)m; ProcessAggregateEvent(message); break; } case "commandcompletionevent": { CCE.Jetstream message = (CCE.Jetstream)m; ProcessCommandCompletionEvent(message); break; } case "commandqueuedevent": { CQE.Jetstream message = (CQE.Jetstream)m; ProcessCommandQueuedEvent(message); break; } case "devicefailureevent": { DFE.Jetstream message = (DFE.Jetstream)m; ProcessDeviceFailureEvent(message); break; } case "devicerestoreevent": { DRE.Jetstream message = (DRE.Jetstream)m; ProcessDeviceRestoreEvent(message); break; } case "heartbeatevent": { HE.Jetstream message = (HE.Jetstream)m; ProcessHeartbeatEvent(message); break; } case "logentryevent": { LEE.Jetstream message = (LEE.Jetstream)m; ProcessLogEntryEvent(message); break; } case "logicaldeviceaddedevent": { LDAE.Jetstream message = (LDAE.Jetstream)m; ProcessLogicalDeviceAddedEvent(message); break; } case "logicaldeviceremovedevent": { LDRE.Jetstream message = (LDRE.Jetstream)m; ProcessLogicalDeviceRemovedEvent(message); break; } case "objectevent": { OE.Jetstream message = (OE.Jetstream)m; ProcessObjectEvent(message); break; } case "sensorreadingevent": { SRE.Jetstream message = (SRE.Jetstream)m; ProcessSensorReadingEvent(message); break; } default: { ProcessUnknownMessage(m.ToString()); break; } } } catch (Exception ex) { EventLog.WriteEntry("JetstreamSDK", ex.Message + "\n" + ex.StackTrace); } } } }
/// <summary> /// Method for processing a new <paramref name="aggregateEvent"/> /// </summary> /// <param name="aggregateEvent"> /// Deserialized AggregateEvent message in the xsd.exe object model. /// </param> protected virtual void ProcessAggregateEvent(AE.Jetstream aggregateEvent) { }
public void AggregateEventTest() { try { AE.JetstreamHeader agHeader = new AE.JetstreamHeader(); AE.Jetstream aggregateEvent = new AE.Jetstream(); AE.JetstreamAggregateEvent evnt = new AE.JetstreamAggregateEvent(); AE.JetstreamAggregateEventDeviceExtensionList agEvntDevList = new AE.JetstreamAggregateEventDeviceExtensionList(); AE.JetstreamAggregateEventActionEPCLists agEvntActEpcList = new AE.JetstreamAggregateEventActionEPCLists(); AE.JetstreamAggregateEventDeviceExtensionListDeviceExtension[] deExtn = new AE.JetstreamAggregateEventDeviceExtensionListDeviceExtension[1]; deExtn[0] = new AE.JetstreamAggregateEventDeviceExtensionListDeviceExtension { Name = "WindName" + LogicalDeviceId, Value = "Value" + LogicalDeviceId }; AE.JetstreamAggregateEventActionEPCListsActionEPCListEPC[] epclst = new AE.JetstreamAggregateEventActionEPCListsActionEPCListEPC[1]; epclst[0] = new AE.JetstreamAggregateEventActionEPCListsActionEPCListEPC { Value = "Value" + LogicalDeviceId }; // System.Xml.XmlAttribute[] AnyAttr =new Xml.XmlAttribute(); AE.JetstreamAggregateEventActionEPCListsActionEPCListType typ; typ = AE.JetstreamAggregateEventActionEPCListsActionEPCListType.ADD; AE.JetstreamAggregateEventActionEPCListsActionEPCList[] epcActn = new AE.JetstreamAggregateEventActionEPCListsActionEPCList[1]; epcActn[0] = new AE.JetstreamAggregateEventActionEPCListsActionEPCList { EPC = epclst, Type = typ }; # region Window Service Code agHeader.LogicalDeviceId = LogicalDeviceId; agHeader.EventTime = DateTime.Now; aggregateEvent.Header = agHeader; aggregateEvent.AggregateEvent = evnt; aggregateEvent.AggregateEvent.DeviceExtensionList = agEvntDevList; aggregateEvent.AggregateEvent.ActionEPCLists = agEvntActEpcList; aggregateEvent.AggregateEvent.DeviceExtensionList.DeviceExtension = deExtn; aggregateEvent.AggregateEvent.ActionEPCLists.ActionEPCList = epcActn; string passRfid = ""; string logicalDeviceId = aggregateEvent.Header.LogicalDeviceId; DateTime receiveDate = aggregateEvent.Header.EventTime; // collect and record the PassRfid value associated with this event if (aggregateEvent.AggregateEvent.DeviceExtensionList.DeviceExtension != null) { foreach (var deviceExtension in aggregateEvent.AggregateEvent.DeviceExtensionList.DeviceExtension) { if (deviceExtension.Name == "PassRfid") passRfid = deviceExtension.Value; } } // process each of the EPC actions if (aggregateEvent.AggregateEvent.ActionEPCLists.ActionEPCList != null) { foreach (var epcList in aggregateEvent.AggregateEvent.ActionEPCLists.ActionEPCList) { if (epcList.Type == AE.JetstreamAggregateEventActionEPCListsActionEPCListType.ADD) { // collect and record each of the ADD operations foreach (var epc in epcList.EPC) { //JetstreamEventRepository.RecordInventory(logicalDeviceId, epc.Value, "In", receiveDate, passRfid); } } else { // collect and record each of the REMOVE operations foreach (var epc in epcList.EPC) { //JetstreamEventRepository.RecordInventory(logicalDeviceId, epc.Value, "Out", receiveDate, passRfid); } } } } #endregion } catch (Exception ex) { Assert.Fail(ex.ToString()); } }