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 * Abstract Factory to create EventHandlers
26 *
27 * @author Dirk Hünniger
28 *
29 */
30 public interface EventHandlerFactory {
31 /**
32 * Create a new EventHandler. Register it with the give reactor and
33 * associate it with the given Channel.
34 *
35 * @param r
36 * The reactor to register the EventHanlder with
37 * @param ch
38 * The channel to associate the EventHandler with
39 * @return The newly created and configured EventHandler
40 * @throws ClosedChannelException
41 * @throws IOException
42 */
43 public EventHandler produce(Reactor r, SelectableChannel ch)
44 throws ClosedChannelException, IOException;
45 }