TSP: The Transport Sample Protocol



Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

tsp_consumer.h

Go to the documentation of this file.
00001 
00038 #ifndef _TSP_CONSUMER_H
00039 #define _TSP_CONSUMER_H
00040 
00049 /*------------------------------ ENUM ---------------------------------*/
00050  
00056 enum TSP_consumer_status_t {
00057         TSP_CONSUMER_STATUS_OK,
00058         TSP_CONSUMER_STATUS_ERROR_UNKNOWN,
00059         TSP_CONSUMER_STATUS_ERROR_VERSION
00060 };
00061 
00062 /*-------------------------- STRUCTURES -------------------------------*/
00063 
00064 
00065 
00067 struct TSP_sample_t
00068 {
00069   int time;
00070   int provider_global_index;
00071   double user_value;
00072 
00073 
00074 };
00075 
00076 typedef struct TSP_sample_t TSP_sample_t;
00077 
00081 typedef void (*TSP_sample_callback_t) (TSP_sample_t* sample, void* user_data); 
00082 
00083 
00085 struct TSP_consumer_symbol_requested_t
00086 {
00087   char* name;
00088   int index;
00089   int period;
00090   int phase;
00091   /* FIXME : we need a way to tell when
00092      we want a RAW, STRING or DOUBLE
00093      char xdr_tsp_t[4]; */
00094 
00095 };
00096 
00097 typedef struct TSP_consumer_symbol_requested_t TSP_consumer_symbol_requested_t;
00098 
00099 struct TSP_consumer_symbol_requested_list_t
00100 {
00101   int len;
00102   TSP_consumer_symbol_requested_t* val;
00103 };
00104 
00105 typedef struct TSP_consumer_symbol_requested_list_t TSP_consumer_symbol_requested_list_t;
00106 
00107 
00109 struct TSP_consumer_symbol_info_t
00110 {
00111   char* name;
00112   int index;
00113   /* FIXME : char xdr_tsp_t[4]; Symbol type*/
00114   /* FIXME :  u_int dimension ; Symbol dimension, for vectors*/
00115 };
00116 
00117 typedef struct TSP_consumer_symbol_info_t TSP_consumer_symbol_info_t;
00118 
00119 
00120 struct TSP_consumer_symbol_info_list_t
00121 {
00122   int len;
00123   TSP_consumer_symbol_info_t* val;
00124 };
00125 
00126 typedef struct TSP_consumer_symbol_info_list_t TSP_consumer_symbol_info_list_t;
00127 
00129 struct TSP_consumer_information_t
00130 {
00131   /* FIXME : int provider_timeout;*/
00132   double base_frequency;
00133   int max_period;
00134   int max_client_number;
00135   int current_client_number;
00136   TSP_consumer_symbol_info_list_t symbols;
00137 };
00138 
00139 typedef struct TSP_consumer_information_t TSP_consumer_information_t;
00140 
00141 
00143 typedef  void* TSP_provider_t;
00144 
00145 #ifndef FALSE
00146 #define FALSE   (0)
00147 #endif
00148 
00149 #ifndef TRUE
00150 #define TRUE    (!FALSE)
00151 #endif
00152 
00153 /*--------------------------------- FUNCTIONS -------------------------------*/
00154 
00166 int TSP_consumer_init(int* argc, char** argv[]);
00167 
00173 void TSP_consumer_end();
00174 
00175 
00176 /*----
00177   TSP_consumer_connect_all
00178   TSP_consumer_disconnect_all
00179                        deprecated, use URL connection instead 
00180 ---*/
00181 
00190 void TSP_consumer_connect_all(const char* host_name,
00191                            TSP_provider_t** providers,
00192                            int* nb_providers);
00193 
00198 void TSP_consumer_disconnect_all(TSP_provider_t providers[]);                            
00199 
00206 #define TSP_URL_FORMAT_USAGE  "\
00207 TSP URL format is defined by <PROTOCOL://HOST/SERVER:PORT>           \n\
00208 \tPROTOCOL   if omitted, is defaulted to 'rpc'                       \n\
00209 \tHOST       if omitted, is defaulted to 'localhost'                 \n\
00210 \tSERVER     if omitted, find any TSP server name                    \n\
00211 \tPORT       if omitted, find first TSP server number                \n\
00212 \tSimplified possible syntaxes :                                     \n\
00213 \t\tPROTOCOL://HOST/SERVER     = PROTOCOL://HOST/SERVER:(find first)         \n\
00214 \t\tPROTOCOL://HOST/:0         = PROTOCOL://HOST/(find any):0                \n\
00215 \t\tPROTOCOL://HOST            = PROTOCOL://HOST/(find any):(find first)     \n\
00216 \t\tPROTOCOL:// or PROTOCOL    = PROTOCOL://localhost/(find any):(find first)\n\
00217 \t\tvoid, /, //, 
00218 \tOthers may have unpredictable results .. \n"
00219 
00220 TSP_provider_t* TSP_consumer_connect_url(const char *url);
00221 
00222 
00230 const char* TSP_consumer_get_connected_name(TSP_provider_t provider);           
00231 
00235 void TSP_consumer_disconnect_one(TSP_provider_t provider);
00236 
00237 
00238           
00239 
00265 int TSP_consumer_request_open(TSP_provider_t provider, int custom_argc, char* custom_argv[]);
00266 
00272 int TSP_consumer_request_close(TSP_provider_t provider);
00273 
00274 
00284 int TSP_consumer_request_information(TSP_provider_t provider);
00285 
00286 
00294 const TSP_consumer_information_t* TSP_consumer_get_information(TSP_provider_t provider);
00295 
00310 int TSP_consumer_request_sample(TSP_provider_t provider,
00311                                 TSP_consumer_symbol_requested_list_t* symbols);
00312 
00320 const TSP_consumer_symbol_requested_list_t* TSP_consumer_get_requested_sample(TSP_provider_t provider);
00321 
00333 int TSP_consumer_request_sample_init(TSP_provider_t provider, TSP_sample_callback_t callback, void* user_data);    
00334 
00340 int TSP_consumer_request_sample_destroy(TSP_provider_t provider);    
00341 
00355 int TSP_consumer_read_sample(TSP_provider_t provider,
00356                              TSP_sample_t* sample,
00357                              int* new_sample);
00358 
00361 #endif /* _TSP_CONSUMER_H */
Framework Home Page.

Beware !! TSP wave is coming...