01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one
03: * or more contributor license agreements. See the NOTICE file
04: * distributed with this work for additional information
05: * regarding copyright ownership. The ASF licenses this file
06: * to you under the Apache License, Version 2.0 (the
07: * "License"); you may not use this file except in compliance
08: * with the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing,
13: * software distributed under the License is distributed on an
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15: * KIND, either express or implied. See the License for the
16: * specific language governing permissions and limitations
17: * under the License.
18: *
19: */
20: package org.apache.mina.common;
21:
22: /**
23: * An {@link IoFuture} for asynchronous write requests.
24: *
25: * <h3>Example</h3>
26: * <pre>
27: * IoSession session = ...;
28: * WriteFuture future = session.write(...);
29: * // Wait until the message is completely written out to the O/S buffer.
30: * future.join();
31: * if( future.isWritten() )
32: * {
33: * // The message has been written successfully.
34: * }
35: * else
36: * {
37: * // The messsage couldn't be written out completely for some reason.
38: * // (e.g. Connection is closed)
39: * }
40: * </pre>
41: *
42: * @author The Apache MINA Project (dev@mina.apache.org)
43: * @version $Rev: 591310 $, $Date: 2007-11-02 05:57:00 -0600 (Fri, 02 Nov 2007) $
44: */
45: public interface WriteFuture extends IoFuture {
46: /**
47: * Returns <tt>true</tt> if the write operation is finished successfully.
48: */
49: boolean isWritten();
50:
51: /**
52: * Returns the cause of the write failure if and only if the write
53: * operation has failed due to an {@link Exception}. Otherwise,
54: * <tt>null</tt> is returned.
55: */
56: Throwable getException();
57:
58: /**
59: * Sets the message is written, and notifies all threads waiting for
60: * this future. This method is invoked by MINA internally. Please do
61: * not call this method directly.
62: */
63: void setWritten();
64:
65: /**
66: * Sets the cause of the write failure, and notifies all threads waiting
67: * for this future. This method is invoked by MINA internally. Please
68: * do not call this method directly.
69: */
70: void setException(Throwable cause);
71:
72: WriteFuture await() throws InterruptedException;
73:
74: WriteFuture awaitUninterruptibly();
75:
76: WriteFuture addListener(IoFutureListener<?> listener);
77:
78: WriteFuture removeListener(IoFutureListener<?> listener);
79: }
|