37 |
|
|
38 |
package java.nio.channels.spi; |
package java.nio.channels.spi; |
39 |
|
|
40 |
|
import java.io.IOException; |
41 |
import java.nio.channels.SelectionKey; |
import java.nio.channels.SelectionKey; |
42 |
import java.nio.channels.Selector; |
import java.nio.channels.Selector; |
43 |
import java.util.List; |
import java.util.List; |
45 |
|
|
46 |
public abstract class AbstractSelector extends Selector |
public abstract class AbstractSelector extends Selector |
47 |
{ |
{ |
48 |
boolean closed = true; |
boolean closed = false; |
49 |
SelectorProvider provider; |
SelectorProvider provider; |
50 |
|
|
51 |
|
/** |
52 |
|
* Initializes the slector. |
53 |
|
*/ |
54 |
protected AbstractSelector (SelectorProvider provider) |
protected AbstractSelector (SelectorProvider provider) |
55 |
{ |
{ |
56 |
this.provider = provider; |
this.provider = provider; |
57 |
} |
} |
58 |
|
|
59 |
|
/** |
60 |
|
* Marks the beginning of an I/O operation that might block indefinitely. |
61 |
|
*/ |
62 |
protected final void begin () |
protected final void begin () |
63 |
{ |
{ |
64 |
} |
} |
65 |
|
|
66 |
public final void close () |
/** |
67 |
|
* Closes the channel. |
68 |
|
* |
69 |
|
* @exception IOException If an error occurs |
70 |
|
*/ |
71 |
|
public final void close () throws IOException |
72 |
{ |
{ |
73 |
if (closed) |
if (closed) |
74 |
return; |
return; |
75 |
|
|
76 |
closed = true; |
closed = true; |
77 |
implCloseSelector (); |
implCloseSelector (); |
78 |
} |
} |
79 |
|
|
80 |
|
/** |
81 |
|
* Tells whether this channel is open or not. |
82 |
|
*/ |
83 |
public final boolean isOpen () |
public final boolean isOpen () |
84 |
{ |
{ |
85 |
return ! closed; |
return ! closed; |
104 |
return null; |
return null; |
105 |
} |
} |
106 |
|
|
107 |
protected abstract void implCloseSelector (); |
/** |
108 |
|
* Closes the channel. |
109 |
|
*/ |
110 |
|
protected abstract void implCloseSelector () throws IOException; |
111 |
|
|
112 |
protected abstract SelectionKey register (AbstractSelectableChannel ch, |
protected abstract SelectionKey register (AbstractSelectableChannel ch, |
113 |
int ops, Object att); |
int ops, Object att); |
114 |
} |
} |