1/*
2 * Author:      William Chia-Wei Cheng (bill.cheng@acm.org)
3 *
4 * Copyright (C) 2001-2009, William Chia-Wei Cheng.
5 *
6 * This file may be distributed under the terms of the Q Public License
7 * as defined by Trolltech AS of Norway and appearing in the file
8 * LICENSE.QPL included in the packaging of this file.
9 *
10 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
11 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
12 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
13 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
16 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 * @(#)$Header: /mm2/home/cvs/bc-src/tgif/rm_intrf.e,v 1.10 2011/05/16 16:21:59 william Exp $
19 */
20
21#ifndef _RM_INTRF_E_
22#define _RM_INTRF_E_
23
24#include "rmcast/src/rmcast.h"
25
26typedef void *TGEF_USER_INFO;
27typedef long (TGEF_MAIN)ARGS_DECL((TGEF_USER_INFO*, int, int, void*));
28
29typedef void (RM_getVersion_Func)ARGS_DECL((char *buf, int buf_sz));
30typedef int  (RM_initialize_Func)ARGS_DECL((void *callbackterm( void )));
31typedef int  (RM_joinGroup_Func)ARGS_DECL((char *group, int port));
32typedef void (RM_leaveGroup_Func)ARGS_DECL((int sock, char *group));
33typedef void (RM_terminate_Func)ARGS_DECL((void));
34typedef int  (RM_sendto_Func)ARGS_DECL((int socket, void *buffer,
35                                        int buffsize));
36typedef int  (RM_recv_Func)ARGS_DECL((int socket, void *buffer, int buffsize));
37typedef int  (RM_getCurStatus_Func)ARGS_DECL((char *group, int port,
38                                              CurStatus *c));
39typedef int  (RM_sendCurStatus_Func)ARGS_DECL((int connfd, char *buff,
40                                               int buffsize));
41typedef int  (RM_readConfigFile_Func)ARGS_DECL((char *filename,
42                                                char show_config_file));
43typedef void (RM_getOption_Func)ARGS_DECL((int opt, void *return_value));
44typedef void (RM_setOption_Func)ARGS_DECL((int opt, void *optvalue));
45typedef int  (RM_setHostDelay_Func)ARGS_DECL((char *hostname,
46                                              int estimated_one_way_delay));
47typedef int  (RM_getHostDelay_Func)ARGS_DECL((char *hostname,
48                                              int *estimated_one_way_delay));
49typedef void (RMDEBUG_setpidip_Func)ARGS_DECL((int pid, char *ip));
50typedef void (RMDEBUG_setsn_Func)ARGS_DECL((int sn));
51
52typedef struct tagRMCastIntrfInfo {
53   char szPath[MAXPATHLENGTH+1];
54
55   RM_getVersion_Func *pfn_RM_getVersion;
56   RM_initialize_Func *pfn_RM_initialize;
57   RM_joinGroup_Func *pfn_RM_joinGroup;
58   RM_leaveGroup_Func *pfn_RM_leaveGroup;
59   RM_terminate_Func *pfn_RM_terminate; /* no need */
60   RM_sendto_Func *pfn_RM_sendto;
61   RM_recv_Func *pfn_RM_recv;
62   RM_getCurStatus_Func *pfn_RM_getCurStatus;
63   RM_sendCurStatus_Func *pfn_RM_sendCurStatus;
64   RM_readConfigFile_Func *pfn_RM_readConfigFile;
65   RM_getOption_Func *pfn_RM_getOption;
66   RM_setOption_Func *pfn_RM_setOption;
67   RM_setHostDelay_Func *pfn_RM_setHostDelay; /* no need */
68   RM_getHostDelay_Func *pfn_RM_getHostDelay; /* no need */
69   RMDEBUG_setpidip_Func *pfn_RMDEBUG_setpidip; /* no need */
70   RMDEBUG_setsn_Func *pfn_RMDEBUG_setsn; /* no need */
71
72   void *pSharedLibHandle;
73} RMCastIntrfInfo;
74
75extern char cmdLineRMCastLibDir[MAXPATHLENGTH+1];
76extern char cmdLineRMCastLibPath[MAXPATHLENGTH+1];
77extern RMCastIntrfInfo gRMCastIntrfInfo;
78
79#ifdef _INCLUDE_FROM_RM_INTRF_C_
80#undef extern
81#define extern
82#endif /*_INCLUDE_FROM_RM_INTRF_C_*/
83
84extern void	RMCastCleanUp ARGS_DECL((void));
85extern int	RMCastInit ARGS_DECL((void));
86
87#ifndef _NO_RMCAST_SO
88extern void	RM_getVersion ARGS_DECL((char *buf, int buf_sz));
89extern int	RM_initialize ARGS_DECL((void *callbackterm( void )));
90extern int	RM_joinGroup ARGS_DECL((char *group, int port));
91extern void	RM_leaveGroup ARGS_DECL((int sock, char *group));
92extern void	RM_terminate ARGS_DECL((void));
93extern int	RM_sendto ARGS_DECL((int socket, void *buffer, int buffsize));
94extern int	RM_recv ARGS_DECL((int socket, void *buffer, int buffsize));
95extern int	RM_getCurStatus ARGS_DECL((char *group, int port,
96                                           CurStatus *c));
97extern int	RM_sendCurStatus ARGS_DECL((int connfd, char *buff,
98                                            int buffsize));
99extern int	RM_readConfigFile ARGS_DECL((char *filename,
100                                             char show_config_file));
101extern void	RM_getOption ARGS_DECL((int opt, void *return_value));
102extern void	RM_setOption ARGS_DECL((int opt, void *optvalue));
103extern int	RM_setHostDelay ARGS_DECL((char *hostname,
104                                           int estimated_one_way_delay));
105extern int	RM_getHostDelay ARGS_DECL((char *hostname,
106                                           int *estimated_one_way_delay));
107extern void	RMDEBUG_setpidip ARGS_DECL((int pid, char *ip));
108extern void	RMDEBUG_setsn ARGS_DECL((int sn));
109#endif /* _NO_RMCAST_SO */
110
111#ifdef _INCLUDE_FROM_RM_INTRF_C_
112#undef extern
113#ifndef _NO_RECURSIVE_EXTERN
114#define extern extern
115#endif /* ~_NO_RECURSIVE_EXTERN */
116#endif /*_INCLUDE_FROM_RM_INTRF_C_*/
117
118#endif /*_RM_INTRF_E_*/
119