blob: 02b2c961e2f0699e80c1626309d18b129ed902b2 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ANDROID_ASYNC_IO_COMMON_H_
#define ANDROID_ASYNC_IO_COMMON_H_
/*
* Contains declarations common for asynchronous socket I/O
*/
/* Enumerates asynchronous I/O states.
* Values from this enum are passed to callbacks associated with an I/O,
* indicating at what state the I/O is. */
typedef enum AsyncIOState {
/* Asynchronous I/O has been queued. (0) */
ASIO_STATE_QUEUED,
/* Asynchronous I/O has started. This state indicates that I/O has been
* performed for the first time. (1) */
ASIO_STATE_STARTED,
/* Asynchronous I/O is continuing. This state indicates that I/O has been
* invoked for the second (or more) time. (2) */
ASIO_STATE_CONTINUES,
/* Asynchronous I/O is about to be retried. (3) */
ASIO_STATE_RETRYING,
/* Asynchronous I/O has been successfuly completed. (4) */
ASIO_STATE_SUCCEEDED,
/* Asynchronous I/O has failed. (5) */
ASIO_STATE_FAILED,
/* Asynchronous I/O has timed out. (6) */
ASIO_STATE_TIMED_OUT,
/* Asynchronous I/O has been cancelled (due to disconnect, for
* instance). (7) */
ASIO_STATE_CANCELLED,
/* Asynchronous I/O is finished and is about to be discarder. This state is
* useful in case there is an association between an I/O and some client's
* component, that holds a reference associated with this I/O. When callback
* is invoked with this state, it means that it's safe to drop that extra
* reference associated with the I/O (8) */
ASIO_STATE_FINISHED,
} AsyncIOState;
/* Enumerates actions to perform with an I/O on state transition.
* Values from this enum are returned from async I/O callbacks, indicating what
* action should be performed with the I/O by I/O handler. */
typedef enum AsyncIOAction {
/* I/O is done. Perform default action depending on I/O type. */
ASIO_ACTION_DONE,
/* Abort the I/O. */
ASIO_ACTION_ABORT,
/* Retry the I/O. */
ASIO_ACTION_RETRY,
} AsyncIOAction;
#endif /* ANDROID_ASYNC_IO_COMMON_H_ */