00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _terimber_aiofile_factory_h_
00029 #define _terimber_aiofile_factory_h_
00030
00031 #include "log.h"
00032
00035 enum aiofile_type
00036 {
00037 AIOFILE_UNKNOWN = 0,
00038 AIOFILE_READ,
00039 AIOFILE_WRITE
00040 };
00041
00044 class terimber_aiofile_callback
00045 {
00046 public:
00048 virtual
00049 ~terimber_aiofile_callback() {}
00050
00052 virtual
00053 void
00054 v_on_error( size_t handle,
00055 int err,
00056 aiofile_type type,
00057 void* userdata
00058 ) = 0;
00060 virtual
00061 void
00062 v_on_write( size_t handle,
00063 void* buf,
00064 size_t requested,
00065 size_t processed,
00066 void* userdata
00067 ) = 0;
00069 virtual
00070 void
00071 v_on_read( size_t handle,
00072 void* buf,
00073 size_t requested,
00074 size_t processed,
00075 void* userdata
00076 ) = 0;
00077 };
00078
00081 class terimber_aiofile : public terimber_log_helper
00082 {
00083 public:
00085 virtual ~terimber_aiofile() {}
00087 virtual size_t open(const char* file_name,
00088 bool read_write,
00089 terimber_aiofile_callback* callback
00090 ) = 0;
00092 virtual void close( size_t handle
00093 ) = 0;
00095 virtual int write( size_t handle,
00096 size_t offset,
00097 const void* buf,
00098 size_t len,
00099 size_t timeout,
00100 void* userdata
00101 ) = 0;
00103 virtual int read( size_t handle,
00104 size_t offset,
00105 void* buf,
00106 size_t len,
00107 size_t timeout,
00108 void* userdata
00109 ) = 0;
00110
00112 virtual void doxray() = 0;
00113 };
00114
00117 class terimber_aiofile_factory
00118 {
00119 public:
00121 terimber_aiofile_factory();
00123 ~terimber_aiofile_factory();
00124
00126
00127
00128
00129
00130 terimber_aiofile*
00131 get_aiofile( terimber_log* log = 0,
00132 size_t capacity = 3,
00133 size_t deactivate_time_msec = 60000
00134 );
00135 };
00136
00137
00138
00139 #endif // _terimber_file_port_access_h_