Go to main content

Oracle® Solaris Cluster Data Services Developer's Guide

Exit Print View

Updated: September 2015

How to Define the Event Reception Thread

In the code, you need to ensure that event reception is performed in a separate thread so that your application can continue to do other work while the event thread blocks and waits for event callbacks.

Note - Setting up the XML is discussed later in this chapter.
  1. In your code, define a Thread subclass called EventReceptionThread that creates a ServerSocket and waits for events to arrive on the socket.

    In this part of the example code, events are neither read nor processed. Reading and processing events are discussed later in this chapter. The EventReceptionThread creates a ServerSocket on a wildcard internet-working protocol address. EventReceptionThread also keeps a reference to the CrnpClient object so that EventReceptionThread can send events to the CrnpClient object to process.

    class EventReceptionThread extends Thread
    public EventReceptionThread(CrnpClient clientIn) throws IOException
    client = clientIn;
    listeningSock = new ServerSocket(client.localPort, 50,
    public void run()
    try {
    DocumentBuilder db = client.dbf.newDocumentBuilder();
    db.setErrorHandler(new DefaultHandler());
    while(true) {
    Socket sock = listeningSock.accept();
    // Construct event from the sock stream and process it
    } catch (Exception e) {
    /* private member variables */
    private ServerSocket listeningSock;
    private CrnpClient client;
  2. Construct a createEvtRecepThr object.
    private void createEvtRecepThr() throws Exception
    evtThr = new EventReceptionThread(this);