00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _GATFILESTREAMCPI_H_
00021 #define _GATFILESTREAMCPI_H_ 1
00022
00023 typedef struct GATFileStreamCPI_S *GATFileStreamCPI;
00024
00025 #include "GATType.h"
00026 #include "GATContext.h"
00027 #include "GATPreferences.h"
00028 #include "GATLocation.h"
00029 #include "GATMetricEvent.h"
00030 #include "GATMetric.h"
00031 #include "GATTime.h"
00032 #include "GATFileStream.h"
00033 #include "GATMonitorable.h"
00034
00035
00036 #define GATFILESTREAMCPI_VERSION1 1
00037
00038
00039 #define GATFILESTREAMCPI_VERSION GATFILESTREAMCPI_VERSION1
00040
00041
00042
00043
00044
00045 typedef struct
00046 {
00047 GATContext context;
00048 GATLocation location;
00049 GATFileStreamMode mode;
00050 GATMonitorable_Impl monitorable;
00051 GATObject_const source;
00052 void *instance_data;
00053 } GATFileStreamCPI_Instance;
00054
00055
00056 typedef void (*GATFileStreamCPI_Adaptor_Destroy)(void *);
00057
00058 typedef GATResult (*GATFileStreamCPI_Adaptor_ServiceActions)(void *,
00059 GATFileStreamCPI_Instance *, GATTimePeriod_const);
00060
00061
00062 typedef void (*GATFileStreamCPI_Adaptor_DestroyInstance)(void *,
00063 GATFileStreamCPI_Instance *);
00064
00065 typedef GATResult (*GATFileStreamCPI_Adaptor_CreateInstance)(void *,
00066 GATFileStreamCPI_Instance *);
00067
00068 typedef GATResult (*GATFileStreamCPI_Adaptor_CloneInstance)(void *,
00069 GATFileStreamCPI_Instance const *, GATFileStreamCPI_Instance *);
00070
00071 typedef GATResult (*GATFileStreamCPI_Adaptor_EqualsInstance)(void *,
00072 GATFileStreamCPI_Instance const *, GATFileStreamCPI_Instance const *, GATBool *);
00073
00074
00075
00076 typedef GATResult (*GATFileStreamCPI_Adaptor_Read)(void *,
00077 GATFileStreamCPI_Instance const *, void *, GATuint32, GATuint32 *);
00078
00079 typedef GATResult (*GATFileStreamCPI_Adaptor_Write)(void *,
00080 GATFileStreamCPI_Instance const *, void const *, GATuint32, GATuint32 *);
00081
00082 typedef GATResult (*GATFileStreamCPI_Adaptor_Seek)(void *,
00083 GATFileStreamCPI_Instance const *, GATOrigin, GATint32, GATuint32 *);
00084
00085 typedef GATResult (*GATFileStreamCPI_Adaptor_Close)(void *,
00086 GATFileStreamCPI_Instance *);
00087
00088
00089
00090 typedef GATResult (* GATFileStreamCPI_Adaptor_GetMetrics)(void *,
00091 GATFileStreamCPI_Instance const *, GATList_GATMetric *);
00092
00093 typedef GATResult (* GATFileStreamCPI_Adaptor_GetMetricEvent)(void *,
00094 GATFileStreamCPI_Instance const *, GATMetric, GATMetricEvent *);
00095
00096 typedef struct
00097 {
00098
00099 void *data;
00100 GATFileStreamCPI_Adaptor_Destroy destroy;
00101 GATFileStreamCPI_Adaptor_ServiceActions service_actions;
00102
00103
00104 GATFileStreamCPI_Adaptor_CreateInstance create_instance;
00105 GATFileStreamCPI_Adaptor_DestroyInstance destroy_instance;
00106 GATFileStreamCPI_Adaptor_CloneInstance clone_instance;
00107 GATFileStreamCPI_Adaptor_EqualsInstance equals_instance;
00108
00109
00110 GATFileStreamCPI_Adaptor_Read read;
00111 GATFileStreamCPI_Adaptor_Write write;
00112 GATFileStreamCPI_Adaptor_Seek seek;
00113 GATFileStreamCPI_Adaptor_Close close;
00114
00115
00116 GATFileStreamCPI_Adaptor_GetMetrics get_metrics;
00117 GATFileStreamCPI_Adaptor_GetMetricEvent get_metric_event;
00118 } GATFileStreamCPI_Data;
00119
00120 #ifdef __cplusplus
00121 extern "C" {
00122 #endif
00123
00124
00125 GATFileStreamCPI
00126 GATFileStreamCPI_Create(unsigned long int version,
00127 GATFileStreamCPI_Data *data);
00128
00129
00130 void
00131 GATFileStreamCPI_Destroy(GATFileStreamCPI *cpi);
00132
00133
00134 GATResult
00135 GATFileStreamCPI_CreateInstance(GATFileStreamCPI cpi,
00136 GATFileStreamCPI_Instance *instance_data);
00137
00138 void
00139 GATFileStreamCPI_DestroyInstance(GATFileStreamCPI cpi,
00140 GATFileStreamCPI_Instance *instance_data);
00141
00142 GATResult
00143 GATFileStreamCPI_CloneInstance(GATFileStreamCPI cpi,
00144 GATFileStreamCPI_Instance const *instance_data,
00145 GATFileStreamCPI_Instance *new_instance_data);
00146
00147 GATResult
00148 GATFileStreamCPI_EqualsInstance(GATFileStreamCPI cpi,
00149 GATFileStreamCPI_Instance const *lhs, GATFileStreamCPI_Instance const *rhs,
00150 GATBool *isequal);
00151
00152
00153 GATResult
00154 GATFileStreamCPI_Read(GATFileStreamCPI cpi,
00155 GATFileStreamCPI_Instance const *data, void *buffer, GATuint32 size,
00156 GATuint32 *read_bytes);
00157
00158 GATResult
00159 GATFileStreamCPI_Write(GATFileStreamCPI cpi,
00160 GATFileStreamCPI_Instance const *data, void const *buffer, GATuint32 size,
00161 GATuint32 *written_bytes);
00162
00163 GATResult
00164 GATFileStreamCPI_Seek(GATFileStreamCPI cpi,
00165 GATFileStreamCPI_Instance const *data, GATOrigin origin, GATint32 offset,
00166 GATuint32 *new_position);
00167
00168 GATResult
00169 GATFileStreamCPI_Close(GATFileStreamCPI cpi,
00170 GATFileStreamCPI_Instance *data );
00171
00172
00173 GATResult
00174 GATFileStreamCPI_GetMetrics(GATFileStreamCPI cpi,
00175 GATFileStreamCPI_Instance const *data, GATList_GATMetric *metrics);
00176
00177 GATResult
00178 GATFileStreamCPI_GetMetricEvent(GATFileStreamCPI cpi,
00179 GATFileStreamCPI_Instance const *data, GATMetric metric,
00180 GATMetricEvent *event);
00181
00182 #ifdef __cplusplus
00183 }
00184 #endif
00185
00186 #endif