View Javadoc

1   /*
2   Copyright (C) 2007 Dirk Huenniger
3   
4   This library is free software; you can redistribute it and/or
5   modify it under the terms of the GNU Lesser General Public
6   License as published by the Free Software Foundation; either
7   version 2.1 of the License, or (at your option) any later version.
8   
9   This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  Lesser General Public License for more details.
13  
14  You should have received a copy of the GNU Lesser General Public
15  License along with this library; if not, write to the Free Software
16  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17   */
18  package org.indi.reactor;
19  
20  import java.io.IOException;
21  import java.nio.channels.ClosedChannelException;
22  import java.nio.channels.SelectableChannel;
23  
24  /**
25   * Basic Handler class for IO events.
26   * 
27   * @author Dirk Hünniger
28   * 
29   */
30  public interface EventHandler {
31      /**
32       * @return the SelectableChannel for which this Handler is to be
33       *         listening
34       */
35      public SelectableChannel channel();
36  
37      /**
38       * Called by the reactor whenever data is ready for reading.
39       * 
40       * @throws java.io.IOException
41       */
42      public void onRead() throws java.io.IOException;
43  
44      /**
45       * Called by the reactor whenever a new connection is ready to be
46       * accepted (passive connection establishment)
47       * 
48       * @throws java.io.IOException
49       * @throws ClosedChannelException
50       */
51      public void onAccept() throws java.io.IOException, ClosedChannelException;
52  
53      /**
54       * Called by the reactor whenever a new Connection is ready to be
55       * estabished (active connection establishment)
56       * 
57       * @throws java.io.IOException
58       */
59      public void onConnect() throws java.io.IOException;
60  
61      /**
62       * Called by the reactor whenever a connection is ready for writing
63       * 
64       * @throws java.io.IOException
65       */
66      public void onWrite() throws java.io.IOException;
67  
68      /**
69       * Called by the reactor when the handler is removed
70       */
71      public void onClose();
72  
73      /**
74       * Register the handler with the reactor for certain IO events
75       * 
76       * @param ops
77       *                Bitmask descibing the events the handler is to be
78       *                registered for
79       * @throws ClosedChannelException
80       * @throws IOException
81       */
82      public void register(int ops) throws ClosedChannelException, IOException;
83  }