An EventPipe contains items that have changed on the server for its parent (see Applies To). When an EventPipe property is retrieved through the parent it will return a unique event pipe that while kept in scope will receive all the changed items for that parent. Multiple pipes on a single source will all receive each event. Internally the PI-SDK will handle retrieving changed events from the server and scatter them to the instantiated event pipes appropriately.
Different parents will contain different types of items but the interface to the event pipe remains the same.
|Parent Object||Changed Items||Implemented|
|PIData||new and edit events||Yes|
|ListData||new and edit events||Yes|
|IPIData2 (PIData)||Archive data||Yes|
|PIModule||PIUnitBatch changes on a PIModule that is a Unit||Yes|
|PIPoints||Point Attribute changes||For PI3 servers only|
Additional properties and methods are available through the IEventPipe2 and IEventPipe3 secondary interfaces supported by the EventPipe object.
In versions prior to 1.4, when a user explicitly closes a server used by an EventPipe, the PI-SDK marks the EventPipe as a disconnected object. For an EventPipe connected to multiple servers, closing any one of the servers will mark the entire EventPipe as a disconnected object. Further method calls on the EventPipe will return a pseDISCONNECTEDOBJECT error, except in the case of ListSignup for an EventPipe of type of eptPointList or eptPointListArchive. Version 1.4 of the PI-SDK removes this restriction. See the help page on Disconnected Objects for more details.