1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef ANDROID_ASYNC_IO_COMMON_H_ 18 #define ANDROID_ASYNC_IO_COMMON_H_ 19 20 /* 21 * Contains declarations common for asynchronous socket I/O 22 */ 23 24 /* Enumerates asynchronous I/O states. 25 * Values from this enum are passed to callbacks associated with an I/O, 26 * indicating at what state the I/O is. */ 27 typedef enum AsyncIOState { 28 /* Asynchronous I/O has been queued. (0) */ 29 ASIO_STATE_QUEUED, 30 /* Asynchronous I/O has started. This state indicates that I/O has been 31 * performed for the first time. (1) */ 32 ASIO_STATE_STARTED, 33 /* Asynchronous I/O is continuing. This state indicates that I/O has been 34 * invoked for the second (or more) time. (2) */ 35 ASIO_STATE_CONTINUES, 36 /* Asynchronous I/O is about to be retried. (3) */ 37 ASIO_STATE_RETRYING, 38 /* Asynchronous I/O has been successfuly completed. (4) */ 39 ASIO_STATE_SUCCEEDED, 40 /* Asynchronous I/O has failed. (5) */ 41 ASIO_STATE_FAILED, 42 /* Asynchronous I/O has timed out. (6) */ 43 ASIO_STATE_TIMED_OUT, 44 /* Asynchronous I/O has been cancelled (due to disconnect, for 45 * instance). (7) */ 46 ASIO_STATE_CANCELLED, 47 /* Asynchronous I/O is finished and is about to be discarder. This state is 48 * useful in case there is an association between an I/O and some client's 49 * component, that holds a reference associated with this I/O. When callback 50 * is invoked with this state, it means that it's safe to drop that extra 51 * reference associated with the I/O (8) */ 52 ASIO_STATE_FINISHED, 53 } AsyncIOState; 54 55 /* Enumerates actions to perform with an I/O on state transition. 56 * Values from this enum are returned from async I/O callbacks, indicating what 57 * action should be performed with the I/O by I/O handler. */ 58 typedef enum AsyncIOAction { 59 /* I/O is done. Perform default action depending on I/O type. */ 60 ASIO_ACTION_DONE, 61 /* Abort the I/O. */ 62 ASIO_ACTION_ABORT, 63 /* Retry the I/O. */ 64 ASIO_ACTION_RETRY, 65 } AsyncIOAction; 66 67 #endif /* ANDROID_ASYNC_IO_COMMON_H_ */ 68