blob: 42ec421d51892f81475895fe778f0a3a04ca73b5 [file] [log] [blame]
Jake Slack03928ae2014-05-13 18:41:56 -07001//
2// ========================================================================
3// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd.
4// ------------------------------------------------------------------------
5// All rights reserved. This program and the accompanying materials
6// are made available under the terms of the Eclipse Public License v1.0
7// and Apache License v2.0 which accompanies this distribution.
8//
9// The Eclipse Public License is available at
10// http://www.eclipse.org/legal/epl-v10.html
11//
12// The Apache License v2.0 is available at
13// http://www.opensource.org/licenses/apache2.0.php
14//
15// You may elect to redistribute this code under either of these licenses.
16// ========================================================================
17//
18
19package org.eclipse.jetty.io;
20
21import org.eclipse.jetty.util.thread.Timeout;
22
23public interface AsyncEndPoint extends ConnectedEndPoint
24{
25 /* ------------------------------------------------------------ */
26 /**
27 * Dispatch the endpoint if it is not already dispatched
28 *
29 */
30 public void dispatch();
31
32 /* ------------------------------------------------------------ */
33 /**
34 * Dispatch the endpoint. If it is already dispatched, schedule a redispatch
35 *
36 */
37 public void asyncDispatch();
38
39 /* ------------------------------------------------------------ */
40 /** Schedule a write dispatch.
41 * Set the endpoint to not be writable and schedule a dispatch when
42 * it becomes writable.
43 */
44 public void scheduleWrite();
45
46 /* ------------------------------------------------------------ */
47 /** Callback when idle.
48 * <p>An endpoint is idle if there has been no IO activity for
49 * {@link #getMaxIdleTime()} and {@link #isCheckForIdle()} is true.
50 * @param idleForMs TODO
51 */
52 public void onIdleExpired(long idleForMs);
53
54 /* ------------------------------------------------------------ */
55 /** Set if the endpoint should be checked for idleness
56 */
57 public void setCheckForIdle(boolean check);
58
59 /* ------------------------------------------------------------ */
60 /** Get if the endpoint should be checked for idleness
61 */
62 public boolean isCheckForIdle();
63
64
65 /* ------------------------------------------------------------ */
66 public boolean isWritable();
67
68 /* ------------------------------------------------------------ */
69 /**
70 * @return True if IO has been successfully performed since the last call to {@link #hasProgressed()}
71 */
72 public boolean hasProgressed();
73
74 /* ------------------------------------------------------------ */
75 /**
76 */
77 public void scheduleTimeout(Timeout.Task task, long timeoutMs);
78
79 /* ------------------------------------------------------------ */
80 /**
81 */
82 public void cancelTimeout(Timeout.Task task);
83}