KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > activemq > transport > nio > SelectorSelection


1 /**
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one or more
4  * contributor license agreements. See the NOTICE file distributed with
5  * this work for additional information regarding copyright ownership.
6  * The ASF licenses this file to You under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with
8  * the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18 package org.apache.activemq.transport.nio;
19
20 import java.nio.channels.ClosedChannelException JavaDoc;
21 import java.nio.channels.SelectionKey JavaDoc;
22 import java.nio.channels.SocketChannel JavaDoc;
23
24 import org.apache.activemq.transport.nio.SelectorManager.Listener;
25
26 /**
27  *
28  * @author chirino
29  */

30 final public class SelectorSelection {
31
32     private final SelectorWorker worker;
33     private final SelectionKey JavaDoc key;
34     private final Listener listener;
35     private int interest;
36
37
38     public SelectorSelection(SelectorWorker worker, SocketChannel JavaDoc socketChannel, Listener listener) throws ClosedChannelException JavaDoc {
39         this.worker = worker;
40         this.listener = listener;
41         this.key = socketChannel.register(worker.selector, 0, this);
42         worker.incrementUseCounter();
43     }
44
45     public void setInterestOps(int ops) {
46         interest = ops;
47     }
48
49     public void enable() {
50         key.interestOps(interest);
51         worker.selector.wakeup();
52     }
53
54     public void disable() {
55         key.interestOps(0);
56     }
57
58     public void close() {
59         worker.decrementUseCounter();
60         key.cancel();
61         worker.selector.wakeup();
62     }
63
64     public void onSelect() {
65         listener.onSelect(this);
66     }
67
68     public void onError(Throwable JavaDoc e) {
69         listener.onError(this, e);
70     }
71
72 }
73
Popular Tags