SSM
|
00001 00006 #ifndef __SSM_H__ 00007 #define __SSM_H__ 00008 00009 00010 00011 //#include <stdint.h> 00012 #ifndef __GNUC__ 00013 # define __attribute__(x) /*NOTHING*/ 00014 #endif 00015 00016 #include "ssm-time.h" 00017 00018 #ifdef __cplusplus 00019 extern "C" 00020 { 00021 #endif 00022 00025 00026 #define SSM_SNAME_MAX 32 00027 #define createSSM_time(n,u,s,l,c) createSSM(n,u,s,l,c) 00028 00034 typedef 00035 enum 00036 { 00037 SSM_READ = 0x20, 00038 SSM_WRITE = 0x40, 00039 SSM_EXCLUSIVE = 0x80, 00040 SSM_MODE_MASK = 0xe0 00041 } SSM_open_mode; 00042 00046 enum 00047 { 00048 SSM_ERROR_FUTURE = -1, 00049 SSM_ERROR_PAST = -2, 00050 SSM_ERROR_NO_DATA = -3 00051 }; 00052 00053 typedef char *SSM_sid; 00054 typedef int SSM_tid; 00056 /* ---- function prototypes ---- */ 00057 00061 void errSSM( void ); 00062 00063 /* system */ 00072 int initSSM( void ); 00073 00081 int endSSM( void ); 00082 00083 /* open */ 00107 SSM_sid createSSM( const char *stream_name, int stream_id, size_t stream_size, ssmTimeT life, ssmTimeT cycle ) __attribute__ ((warn_unused_result)); 00108 00118 int releaseSSM( SSM_sid *sid ); 00119 00133 SSM_sid openSSM( const char *stream_name, int stream_id, char open_mode ) __attribute__ ((warn_unused_result)); 00134 00144 int closeSSM( SSM_sid *sid ); 00145 00146 /* tid */ 00156 SSM_tid getTID( SSM_sid sid, ssmTimeT ytime ); 00157 00163 SSM_tid getTID_top( SSM_sid sid ); 00164 00170 SSM_tid getTID_bottom( SSM_sid sid ); 00171 00183 int waitTID( SSM_sid sid, SSM_tid tid ); 00184 00185 /* read */ 00198 SSM_tid readSSM( SSM_sid sid, void *data, ssmTimeT * ytime, SSM_tid tid ) __attribute__ ((warn_unused_result)); 00199 00210 SSM_tid readSSM_time( SSM_sid sid, void *data, ssmTimeT ytime, ssmTimeT * ret_time ) __attribute__ ((warn_unused_result)); 00211 00212 /* read with callback function */ 00213 SSM_tid readSSMP( SSM_sid sid, void *adata, ssmTimeT * ytime, SSM_tid tid, 00214 void (*callback)( const void *ssmp, void *data, void *user_data ), void *user_data ) __attribute__ ((warn_unused_result)); 00215 SSM_tid readSSMP_time( SSM_sid sid, void *adata, ssmTimeT ytime, ssmTimeT *ret_time , 00216 void (*callback)( const void *ssmp, void *data, void *user_data ), void *user_data ) __attribute__ ((warn_unused_result)); 00217 00218 /* write */ 00226 SSM_tid writeSSM_time( SSM_sid sid, const void *data, ssmTimeT ytime ); 00227 00232 SSM_tid writeSSM( SSM_sid sid, const void *data, ssmTimeT ytime ); 00233 00234 /* write with callback function */ 00235 SSM_tid writeSSMP( SSM_sid sid, const void *adata, ssmTimeT ytime , 00236 void (*callback)( void *ssmp, const void *data, void *user_data ), void *user_data ); 00237 SSM_tid writeSSMP_time( SSM_sid sid, const void *adata, ssmTimeT ytime , 00238 void (*callback)( void *ssmp, const void *data, void *user_data ), void *user_data ); 00239 00240 /* property */ 00252 int set_propertySSM( const char *stream_name, int stream_id, const void *data, size_t size ); 00253 00262 int get_propertySSM( const char *stream_name, int stream_id, void *data ); 00263 00264 /* others */ 00265 int getSSM_num( void ); 00266 int getSSM_name( int n, char *stream_name, int *stream_id, size_t *size ); 00267 int getSSM_info( const char *stream_name, int stream_id, size_t *size, int *num, double *cycle, size_t *property_size ); 00268 00273 int damp( SSM_sid sid, int mode, int num ); 00274 00277 #ifdef __cplusplus 00278 } 00279 #endif 00280 00281 #endif