Release 10.1A: OpenEdge Getting Started:
Progress OpenEdge Studio

> ## Publish and Subscribe module

> The Publish and Subscribe module demonstrates the Progress 4GL named-event functionality. The module uses two event publishers, `publisher1.w` and `publisher2.w`, and two event subscribers, `subscriber1.w` and `subscriber2.w`. A driver procedure, `subpub.p`, starts the publisher procedures as persistent procedures. The driver then starts the subscriber procedures, passing to them the handles for the persistent publisher procedures.

> | To launch this module, choose the Publish and Subscribe button on the SportsPro main window. The following dialog boxes appear:

> The publish and subscribe functionality works like an e-mail alias. When users subscribe to an e-mail alias, they receive messages whenever messages are published to that alias. Other persistent procedures running in the same session can locate a procedure that generates an event of interest. The persistent procedures subscribe to that event by mapping the event to an internal procedure that is executed when the event occurs.

> Table 2–9 describes the major objects used in the Publish and Subscribe module.

> Table 2–9: Components of the Publish and Subscribe module
> Object or filename | Object type | Function
> --- | --- | ---
> `suppub.p` | Procedure file | Runs the four windows as persistent procedures and passes the handles for the publishers to the subscribers.
> `publisher1.w` | SmartWindow | Serves as a container for the objects in it.
> BUTTON–1 | Button | Publishes a named event, “EventOne,” which causes the EventOne internal procedure to run in any subscriber for which it currently has a handle. It reports the number of subscribers to the event from the replies it receives.
> BUTTON–2 | Button | Publishes a named event, “EventTwo,” which causes the EventTwo internal procedure to run in any subscriber for which it currently has a handle.
> `publisher2.w` | SmartWindow | Serves as a container for the objects in it.
> BUTTON–1 | Button | Publishes a named event, “EventOne,” which causes the EventOne internal procedure to run in any subscriber for which it currently has a handle. It reports the number of subscribers to the event from the replies it receives.
> BUTTON–2 | Button | Publishes a named event, “EventTwo,” which causes the EventTwo internal procedure to run in any subscriber for which it currently has a handle.
> subscriber1.w | SmartWindow | Serves as a container for the objects in it.
> BUTTON–3 | Button | Subscribes to both named events in `publisher1.w` and to “EventOne” in `publisher2.w`.
> BUTTON–4 | Button | Unsubscribes from “EventOne” in `publisher1.w.`
> BUTTON–5 | Button | Unsubscribes from “EventOne” in both publishers.
> subscriber2.w | SmartWindow | Serves as a container for the objects in it.
> BUTTON–6 | Button | Subscribes to “EventTwo” in both publishers and to “EventOne” in `publisher1.w`.

> For more information on publishing and subscribing to named events, see the chapter on user-defined functions in the OpenEdge Development: Progress 4GL Handbook .

Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095