EventPipe Object




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
ListData Archive data Yes
PIBatchDB BatchDB changes Yes
PIModuleDB ModuleDB changes Yes
PITransferRecordDB TransferRecord changes 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.

Enabling Operational Intelligence