00001
00002
00003 #ifndef __CM__H__
00004 #define __CM__H__
00005
00007 #if defined(FUNCPROTO) || defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
00008 #ifndef ARGS
00009 #define ARGS(args) args
00010 #endif
00011 #else
00012 #ifndef ARGS
00013 #define ARGS(args) ()
00014 #endif
00015 #endif
00016
00017 #include "io.h"
00018 #include "atl.h"
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022
00023 #ifndef TRUE
00024 #define TRUE 1
00025 #endif
00026 #ifndef FALSE
00027 #define FALSE 0
00028 #endif
00029
00037 typedef struct _CMformat_list {
00039 char *format_name;
00041 IOFieldList field_list;
00042 }CMFormatRec;
00043
00053 typedef CMFormatRec *CMFormatList;
00054
00055 struct _CManager;
00056 struct _CMConnection;
00057 struct _CMFormat;
00058
00064 typedef struct _CManager *CManager;
00065
00071 typedef struct _CMConnection *CMConnection;
00072
00081 typedef struct _CMFormat *CMFormat;
00082
00086 typedef struct _CMTaskHandle *CMTaskHandle;
00087
00105 typedef void (*CMHandlerFunc) ARGS((CManager cm,
00106 CMConnection conn,
00107 void *message, void *client_data,
00108 attr_list attrs));
00109
00120 typedef void (*CMPollFunc) ARGS((CManager cm, void *client_data));
00121
00133 typedef void (*CMCloseHandlerFunc) ARGS((CManager cm, CMConnection conn,
00134 void *client_data));
00135
00136
00142 extern CManager CManager_create();
00143
00151 extern void CManager_close ARGS((CManager cm));
00152
00167 extern int CMfork_comm_thread ARGS((CManager cm));
00168
00180 extern int CMlisten ARGS((CManager cm));
00181
00202 extern int CMlisten_specific ARGS((CManager cm, attr_list listen_info));
00203
00213 extern attr_list
00214 CMget_contact_list ARGS((CManager cm));
00215
00228 extern int
00229 CMcontact_self_check ARGS((CManager cm, attr_list attrs));
00230
00245 extern CMConnection
00246 CMget_conn ARGS((CManager cm, attr_list contact_list));
00247
00263 extern CMConnection
00264 CMinitiate_conn ARGS((CManager cm, attr_list contact_list));
00265
00278 extern void
00279 CMConnection_close ARGS((CMConnection conn));
00280
00289 extern void
00290 CMConnection_add_reference ARGS((CMConnection conn));
00291
00302 extern void
00303 CMconn_register_close_handler ARGS((CMConnection conn,
00304 CMCloseHandlerFunc func,
00305 void *client_data));
00306
00324 extern CMFormat
00325 CMregister_format ARGS((CManager cm, char *format_name,
00326 IOFieldList field_list, CMFormatList subformat_list));
00349 extern CMFormat CMlookup_format ARGS((CManager cm, IOFieldList field_list));
00350
00394 extern
00395 IOContext CMget_user_type_context ARGS((CManager cm));
00396
00402 extern
00403 void CMfree_user_type_context ARGS((CManager cm, IOContext context));
00404
00420 extern IOFormat
00421 CMregister_user_format ARGS((CManager cm, IOContext context, char *format_name,
00422 IOFieldList field_list, CMFormatList subformat_list));
00423
00437 extern IOFormat CMlookup_user_format ARGS((CManager cm, IOFieldList field_list));
00438
00453 extern IOFormat CMget_IOformat_by_name ARGS((CManager cm, IOContext context,
00454 char *name));
00469 extern IOFormat CMget_format_IOcontext ARGS((CManager cm, IOContext context,
00470 void *buffer));
00490 extern IOFormat *CMget_subformats_IOcontext ARGS((CManager cm,
00491 IOContext context,
00492 void *buffer));
00506 extern void
00507 CMset_conversion_IOcontext ARGS((CManager cm, IOContext context,
00508 IOFormat format, IOFieldList field_list,
00509 int native_struct_size));
00524 extern int
00525 CMwrite ARGS((CMConnection conn, CMFormat format, void *data));
00526
00546 extern int
00547 CMwrite_attr ARGS((CMConnection conn, CMFormat format, void *data,
00548 attr_list attrs));
00549
00559 extern void
00560 CMregister_handler ARGS((CMFormat format, CMHandlerFunc handler,
00561 void *client_data));
00562
00580 extern void *CMtake_buffer ARGS((CManager cm, void *data));
00581
00591 extern void CMreturn_buffer ARGS((CManager cm, void *data));
00592
00601 typedef void (*CMNonCMHandler) ARGS((CMConnection conn,
00602 int header));
00603
00622 extern void
00623 CMregister_non_CM_message_handler ARGS((int header, CMNonCMHandler handler));
00624
00635 extern void
00636 CMadd_poll ARGS((CManager cm, CMPollFunc func, void *client_data));
00637
00657 extern CMTaskHandle
00658 CMadd_periodic_task ARGS((CManager cm, int period_sec, int period_usec,
00659 CMPollFunc func, void *client_data));
00660
00678 extern CMTaskHandle
00679 CMadd_delayed_task ARGS((CManager cm, int secs, int usecs, CMPollFunc func,
00680 void *client_data));
00681
00687 extern void
00688 CMremove_task ARGS((CMTaskHandle handle));
00689
00701 extern void
00702 CMadd_shutdown_task ARGS((CManager cm, CMPollFunc func, void *client_data));
00703
00715 extern CMTaskHandle
00716 CMadd_periodic ARGS((CManager cm, long period, CMPollFunc func,
00717 void *client_data));
00718
00725 extern void
00726 CMremove_periodic ARGS((CMTaskHandle handle));
00727
00740 extern void
00741 CMsleep ARGS((CManager cm, int secs));
00742
00755 extern void
00756 CMusleep ARGS((CManager cm, int usecs));
00757
00770 extern
00771 void CMpoll_network ARGS((CManager cm));
00772
00782 extern
00783 void CMrun_network ARGS((CManager cm));
00784
00805 int CMCondition_get ARGS((CManager cm, CMConnection dep));
00806
00830 int CMCondition_wait ARGS((CManager cm, int condition));
00831
00843 void CMCondition_signal ARGS((CManager cm, int condition));
00844
00867 void CMCondition_set_client_data ARGS((CManager cm, int condition,
00868 void *client_data));
00887 void *CMCondition_get_client_data ARGS((CManager cm, int condition));
00888
00901 int CMCondition_has_signaled ARGS((CManager cm, int condition));
00914 int CMCondition_has_failed ARGS((CManager cm, int condition));
00915
00931 extern void* CMrealloc ARGS((void *ptr, int size));
00938 extern void* CMmalloc ARGS((int size));
00944 extern void CMfree ARGS((void *ptr));
00945
00969 extern long CMprobe_latency ARGS((CMConnection conn, int msg_size,
00970 attr_list attrs));
00971
00987 extern long
00988 CMprobe_bandwidth ARGS((CMConnection conn, int size, attr_list attrs));
00998 #define CM_FD ATL_CHAR_CONS('C','S','F','D')
00999
01001 #define CM_THIS_CONN_PORT ATL_CHAR_CONS('C','S','C','P')
01002
01004 #define CM_PEER_CONN_PORT ATL_CHAR_CONS('C','S','P','P')
01005
01007 #define CM_PEER_IP ATL_CHAR_CONS('C','P','I','P')
01008
01010 #define CM_PEER_LISTEN_PORT ATL_CHAR_CONS('C','S','P','L')
01011
01013 #define CM_PEER_HOSTNAME ATL_CHAR_CONS('C','P','H','O')
01014
01016 #define CM_IP_HOSTNAME ATL_CHAR_CONS('C','I','P','H')
01017
01019 #define CM_IP_ADDR ATL_CHAR_CONS('C','I','P','A')
01020
01022 #define CM_IP_PORT ATL_CHAR_CONS('C','I','P','P')
01023
01026 #define CM_UDP_PORT ATL_CHAR_CONS('C','U','P','P')
01027
01029 #define CM_TRANSPORT ATL_CHAR_CONS('C','T','r','a')
01030
01032 #define CM_ATM_ADDRESS ATL_CHAR_CONS('C','A','T','A')
01033
01035 #define CM_ATM_SELECTOR ATL_CHAR_CONS('C','A','T','S')
01036
01038 #define CM_ATM_BHLI ATL_CHAR_CONS('C','A','T','B')
01039
01041 #define CM_ATM_QOS_CLASS ATL_CHAR_CONS('C','A','Q','C')
01042
01044 #define CM_ATM_QOS_PCR ATL_CHAR_CONS('C','A','Q','P')
01045
01047 #define CM_ATM_QOS_SCR ATL_CHAR_CONS('C','A','Q','S')
01048
01050 #define CM_ATM_QOS_MBS ATL_CHAR_CONS('C','A','Q','M')
01051
01053 #define CM_ATM_FD ATL_CHAR_CONS('C','A','F','D')
01054
01056 #define CM_ATM_REMOTE_ADDRESS ATL_CHAR_CONS('C','A','R','A')
01057
01059 #define CM_ATM_REMOTE_SELECTOR ATL_CHAR_CONS('C','A','R','S')
01060
01062 #define CM_ATM_REMOTE_BHLI ATL_CHAR_CONS('C','A','R','B')
01063
01065 #define CM_ATM_CONN_VPI ATL_CHAR_CONS('C','A','C','V')
01066
01068 #define CM_ATM_CONN_VCI ATL_CHAR_CONS('C','A','C','v')
01069
01071 #define CM_MTP_HOSTNAME ATL_CHAR_CONS('C','M','H','o')
01072
01074 #define CM_MTP_ADDR ATL_CHAR_CONS('C','M','A','d')
01075
01077 #define CM_MTP_PORT ATL_CHAR_CONS('C','M','P','o')
01078
01080 #define CM_RECV_ERR ATL_CHAR_CONS('C','R','R','E')
01081
01083 #define CM_SEND_ERR ATL_CHAR_CONS('C','R','S','E')
01084
01086 #define CM_RECV_RATE ATL_CHAR_CONS('C','R','R','R')
01087
01089 #define CM_SEND_RATE ATL_CHAR_CONS('C','R','S','R')
01090
01092 #define CM_RTSEND_RATE ATL_CHAR_CONS('C','R','R','T')
01093
01095 #define CM_QOS ATL_CHAR_CONS('C','Q','O','S')
01096
01098 #define CM_WIN_INC ATL_CHAR_CONS('C','R','W','I')
01099
01101 #define CM_MAX_SEG ATL_CHAR_CONS('C','R','M','S')
01102
01104 #define CM_MARK ATL_CHAR_CONS('C','R','M','a')
01105
01107 #define CM_START_ADAPT ATL_CHAR_CONS('C','R','S','A')
01108
01110 #define CM_ADAPT_DEGREE ATL_CHAR_CONS('C','R','A','D')
01111
01113 #define CM_ADAPT_COND ATL_CHAR_CONS('C','R','A','C')
01114
01115
01116 #ifdef __cplusplus
01117 }
01118 #endif
01119
01120 #endif