Subversion Repositories Programming Utils

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
86 rm5248 1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one
3
 * or more contributor license agreements.  See the NOTICE file
4
 * distributed with this work for additional information
5
 * regarding copyright ownership.  The ASF licenses this file
6
 * to you under the Apache License, Version 2.0 (the
7
 * "License"); you may not use this file except in compliance
8
 * with 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,
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
package org.apache.sshd.common;
20
 
21
import org.apache.sshd.common.future.CloseFuture;
22
 
23
/**
24
 * A {@code Closeable} is a resource that can be closed.
25
 * The close method is invoked to release resources that the object is
26
 * holding.
27
 *
28
 * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
29
 */
30
public interface Closeable {
31
 
32
    /**
33
     * Close this resource asynchronously and return a future.
34
     * Resources support two closing modes: a graceful mode
35
     * which will cleanly close the resource and an immediate mode
36
     * which will close the resources abruptly.
37
     *
38
     * @param immediately <code>true</code> if the resource should be shut down abruptly,
39
     *                    <code>false</code> for a graceful close
40
     * @return a future
41
     */
42
    CloseFuture close(boolean immediately);
43
 
44
    /**
45
     * Returns <code>true<</code> if this object has been closed.
46
     */
47
    boolean isClosed();
48
 
49
    /**
50
     * Returns <code>true</code> if the {@link #close(boolean)} method
51
     * has been called.
52
     * Note that this method will return <code>true</code> even if
53
     * this {@link #isClosed()} returns <code>true</code>.
54
     */
55
    boolean isClosing();
56
 
57
}