package iqq.im.event; import iqq.im.QQException; public interface QQActionFuture { /** * 判断这个操作是否可以取消 * @return */ public abstract boolean isCancelable(); /** * 判断操作是否取消 * @return */ public abstract boolean isCanceled(); /** * 尝试取消操作 * @throws QQException 如果不能取消,抛出UNABLE_CANCEL异常 */ public abstract void cancel() throws QQException; /** * 等待事件的到来 * Note:可能有最终会产生多个事件如EVT_READ, EVT_WRITE等,此时应该反复调用waitEvent来获得需要的事件 * @return * @throws QQException 等待被中断抛出WAIT_INTERUPPTED */ public abstract QQActionEvent waitEvent() throws QQException; /** * 给定一个超时时间,等待事件到来 * @param timeoutMs 超时时间,毫秒为单位 * @return * @throws QQException 超时抛出 WAIT_TIMEOUT, 等待被中断抛出WAIT_INTERUPPTED */ public abstract QQActionEvent waitEvent(long timeoutMs) throws QQException; /** * 等待最终的事件,通常是EVT_CANCELED,EVT_ERROR,EVT_OK * @return * @throws QQException */ public abstract QQActionEvent waitFinalEvent() throws QQException; /** * 给定一个超时时间,等待最终的事件 * @return * @throws QQException */ public abstract QQActionEvent waitFinalEvent(long timeoutMs) throws QQException; }