TSP: The Transport Sample Protocol



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

tsp_const_def.h

Go to the documentation of this file.
00001 
00037 #ifndef _TSP_CONST_DEF_H
00038 #define _TSP_CONST_DEF_H
00039 
00040 
00042 #define TSP_VERSION 1
00043 
00044 #include "tsp_abs_types.h"
00045 
00046 #define TSP_MAX_SYSMSG_SIZE 256
00047 
00053 #define TSP_CONSUMER_RINGBUF_SIZE (1000 * 100) * 10
00054 
00055 
00056 
00057 /* Max client total number */
00058 #define TSP_MAX_CLIENT_NUMBER 100
00059 
00060 /* Max server total number */
00061 #define TSP_MAX_SERVER_NUMBER 20
00062 
00063 #define TSP_MAX_REQUEST_HANDLERS TSP_MAX_SERVER_NUMBER
00064 
00066 #define TSP_MAX_PERIOD 100000
00067 
00068 
00069 /*-------- SOCKET --------*/
00070 
00075 #define TSP_DATA_STREAM_SOCKET_FIFO_SIZE (1024*48)
00076 
00078 #ifdef VXWORKS
00079 #define TSP_STREAM_SENDER_RINGBUF_SIZE 2
00080 #else
00081 #define TSP_STREAM_SENDER_RINGBUF_SIZE 10
00082 #endif
00083 
00084 
00086 #define TSP_DATA_STREAM_MAX_HEADER_SIZE 1024
00087 /* till now, all elements are doubles, but there will be strings, raw, etc ... */
00088 #define TSP_DATA_STREAM_MAX_ITEM_SIZE sizeof(double)
00089 #define TSP_DATA_STREAM_MAX_BUFFER_SIZE(max_nb_items) \
00090              ( (max_nb_items) * TSP_DATA_STREAM_MAX_ITEM_SIZE \
00091                               + TSP_DATA_STREAM_MAX_HEADER_SIZE)
00092 
00093 
00099 #define TSP_DATA_RECEIVER_BUFFER_SIZE (1024*512)
00100 
00101 
00102 /*-------- STREAM CONTROL -------*/
00103 
00108 enum TSP_msg_ctrl_t
00109   {
00110 
00112     TSP_MSG_CTRL_EOF,
00113 
00115     TSP_MSG_CTRL_RECONF,
00116 
00118     TSP_MSG_CTRL_GLU_DATA_LOST,
00119 
00121     TSP_MSG_CTRL_CONSUMER_DATA_LOST
00122 
00123   };
00124 
00125 typedef enum TSP_msg_ctrl_t TSP_msg_ctrl_t;
00126 
00127 /*-------- TSP PROTOCOL --------*/
00128 
00135 #define TSP_RESERVED_GROUP_EOF        0xFFFFFFFF
00136 
00138 #define TSP_RESERVED_GROUP_ASYNCHRONE 0xFFFFFFFE
00139 
00140 #define TSP_RESERVED_GROUP_RECONF     0xFFFFFFFD
00141 
00142 #define TSP_RESERVED_GROUP_GLU_DATA_LOST     0xFFFFFFFC
00143 
00144 #define TSP_RESERVED_GROUP_CONSUMER_DATA_LOST     0xFFFFFFFB
00145 
00146 /*-------- MISC --------*/
00147 
00148 typedef uint32_t channel_id_t;
00149 typedef uint32_t version_id_t;
00150 typedef uint32_t xdr_and_sync_type_t;
00151 
00152 typedef int time_stamp_t;
00153 
00155 #define UNDEFINED_CHANNEL_ID (-1)
00156 #define UNDEFINED_VERSION_ID (-1)
00157 
00158 /*-------- TSP COMMAND LINE ARGS --------*/
00159 
00160 
00161 /* Provider and consumer side */
00162 #define TSP_ARG_PREFIX            "--tsp-"
00163 #define TSP_ARG_STREAM_INIT_START TSP_ARG_PREFIX"stream-init-start"
00164 #define TSP_ARG_STREAM_INIT_STOP  TSP_ARG_PREFIX"stream-init-stop"
00165 
00166 /* Provider side only */
00167 #define TSP_ARG_SERVER_NUMBER     TSP_ARG_PREFIX"server-number"
00168 
00169 
00170 /* Stuff...*/
00171 #define TSP_ARG_DUMMY_PROG_NAME   "GLU"
00172 
00173 #define TSP_ARG_CONSUMER_USAGE   "TSP consumer usage : " \
00174                                  "[" TSP_ARG_STREAM_INIT_START \
00175                                  " commands ... " TSP_ARG_STREAM_INIT_STOP "] "
00176 
00177 #define TSP_ARG_PROVIDER_USAGE   "TSP provider Usage : " \
00178                                  "[" TSP_ARG_STREAM_INIT_START \
00179                                  " commands ... " TSP_ARG_STREAM_INIT_STOP "] " \
00180                                  " [" TSP_ARG_SERVER_NUMBER " number ]"
00181 
00182 
00183 /*-------- XDR --------*/
00184 
00190 #define XDR_DATA_TYPE_RAW       (1 << (16 + 0))
00191 #define XDR_DATA_TYPE_USER      (1 << (16 + 1))
00192 #define XDR_DATA_TYPE_STRING    (1 << (16 + 2))
00193 #define XDR_DATA_TYPE_MASK      (0xFFFF0000)
00194 
00200 #define TSP_DATA_TYPE_SYNC      (1 << 0)
00201 #define TSP_DATA_TYPE_ASYNC     (1 << 1)
00202 #define TSP_DATA_TYPE_MASK      (0xFFFF)
00203 
00204 /*-------- SERVER INFORMATION --------*/
00205 
00206 /* URL format to connect to a provider :
00207  <protocol:\\host\server_name:server_number> */
00208 #define TSP_URL_FORMAT "%s://%s/%s:%d"
00209 
00210 /* Size of the information string for the server */
00211 #define STRING_SIZE_SERVER_INFO 256
00212 typedef char TSP_server_info_string_t[STRING_SIZE_SERVER_INFO+1]; 
00213 
00219 struct TSP_otsp_server_info_t
00220 {
00221   TSP_server_info_string_t info; 
00222 };
00223 
00224 typedef struct  TSP_otsp_server_info_t TSP_otsp_server_info_t;
00225 
00226 /*-------- RPC --------*/
00227 
00228 #define TSP_RPC_PROTOCOL "rpc"
00229 
00233 #define TSP_RPC_PROGID_BASE_COUNT 0x31230010
00234 
00238 #define TSP_RPC_CONNECT_TIMEOUT 60
00239 
00240 /*------- SYSTEM -------*/
00241 
00245 #define TSP_MAXHOSTNAMELEN 255
00246 
00247 /*-------- MACROS --------*/
00248 
00249 #define TSP_CHECK_ALLOC(p, ret) \
00250         { \
00251                 if ( 0 == p ) \
00252                 { \
00253                         STRACE_ERROR(("-->OUT : ERROR : Memory allocation failed"))  \
00254                         return ret; \
00255                 } \
00256         }       
00257         
00258 #define TSP_CHECK_THREAD(status, ret) \
00259         { \
00260                 if ( 0 != status ) \
00261                 { \
00262                         STRACE_ERROR(("-->OUT : ERROR : Thread API Error"))  \
00263                         return ret; \
00264                 } \
00265         }       
00266         
00267 #define TSP_LOCK_MUTEX(mutex, ret) \
00268         { \
00269                 if ( 0 != pthread_mutex_lock(mutex) )\
00270                 { \
00271                         STRACE_ERROR(("-->OUT : ERROR : Mutex Lock Error"))  \
00272                         return ret; \
00273                 } \
00274         }       
00275 
00276 #define TSP_UNLOCK_MUTEX(mutex, ret) \
00277         { \
00278                 if ( 0 != pthread_mutex_unlock(mutex) ) \
00279                 { \
00280                         STRACE_ERROR(("-->OUT : ERROR : Mutex Unlock Error"))  \
00281                         return ret; \
00282                 } \
00283         }       
00284 
00285 /*-------- DATA STREAM ENDIAN CONVERSION --------*/
00286 
00296 #define TSP_ENCODE_DOUBLE_TO_UINT64(val) (TSP_UINT64_TO_BE (*(uint64_t*)val))
00297 #define TSP_DECODE_DOUBLE_TO_UINT64(val) (TSP_UINT64_FROM_BE (*(uint64_t*)val))
00298 
00299 #define TSP_ENCODE_INT(val) (TSP_INT_TO_BE (val))
00300 #define TSP_DECODE_INT(val) (TSP_INT_FROM_BE (val)) 
00301 
00302 #endif /*_TSP_CONST_DEF_H*/
Framework Home Page.

Beware !! TSP wave is coming...