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/wb.e,v 1.15 2011/05/16 16:22:00 william Exp $ 19 */ 20 21#ifndef _WB_E_ 22#define _WB_E_ 23 24#define WB_PACK 60000 25 26typedef struct WhiteBoardRec { 27 int do_whiteboard; 28 29 char send_fname[MAXPATHLENGTH]; 30 char gz_send_fname[MAXPATHLENGTH]; /* zlib, not gzip */ 31 FILE *send_fp; 32 FILE *gz_send_fp; /* zlib, not gzip */ 33 int send_socket; 34 35 int listening; 36 37 char listen_fname[MAXPATHLENGTH]; 38 char gz_listen_fname[MAXPATHLENGTH]; /* zlib, not gzip */ 39 FILE *listen_fp; 40 FILE *gz_listen_fp; /* zlib, not gzip */ 41 int listen_socket; 42 43 int MCastSock; 44 int bd_commands; 45 int BlockRemoteCmdDepth; 46 47 int logical_clock; 48 long pid; 49 50 int dont_serialize; /* true will skip the call to SerializeCmd() */ 51 52 struct CmdRec *first_cmd, *last_cmd, *cur_cmd; 53 struct CmdRec *first_shadow_cmd, *last_shadow_cmd; 54 55 int join_session_in_progress; /* there is current WB state info */ 56} *WhiteBoardPtr; 57 58typedef struct WbMessage{ 59 char WbCmd[WB_PACK]; 60}wbmsgPtr; 61 62typedef struct tagSerializationInfo { 63 struct SubCmdRec *subcmd; 64 struct SelRec *top_sel; /* TopSel */ 65 struct SelRec *bot_sel; /* BotSel */ 66 int num_objs; /* NumObjs */ 67 68 int include_tgif_obj; /* recordCmdIncludeTgifObj */ 69 int new_colormap; /* recordCmdUsesNewColormap */ 70 int logical_clock; /* gstWBInfo.logical_clock */ 71 char *sender_process_id; /* just a pointer, gszLocalPID */ 72 73 struct SelRec *top_before; /* topSelBeforeInCmd */ 74 struct SelRec *bot_before; /* botSelBeforeInCmd */ 75 int *pos_before; /* stackingPosition */ 76 int count_before; /* stackingCount */ 77 int pos_before_has_ids; /* stackingPositionHasIds */ 78} SerializationInfo; 79 80extern struct WhiteBoardRec gstWBInfo; 81 82extern int cmdLineNoWhiteBoard; 83extern int cmdLineWhiteBoardListenOnly; 84 85#ifdef _INCLUDE_FROM_WB_C_ 86#undef extern 87#define extern 88#endif /*_INCLUDE_FROM_WB_C_*/ 89 90/* =================== Remote Related Functions =================== */ 91 92extern void PrintFullIDsOfObjects ARGS_DECL((char *psz_prefix)); 93 94extern int WBHasReadData ARGS_DECL((int *pn_flag, int *pn_retry)); 95extern int RecvWBData ARGS_DECL(( 96 int flag, /* *pn_flag of WBHasReadData() */ 97 char **ppsz_buf, int *pn_buf_sz)); 98extern void TryHandleWBInputData ARGS_DECL((void)); 99extern int SendWBData ARGS_DECL((char *pszWBData, int logical_clock)); 100//extern int SendWBData ARGS_DECL((char *pszWBData)); 101 102/* =================== Cmd Related Functions =================== */ 103 104extern char *SerializeCmd ARGS_DECL((int CmdType, SerializationInfo*, 105 int *pnAssignedLogicalClock, 106 char **ppszPlainWBData, 107 int *pnPlainWBDataSz)); 108extern void SerializeFreeBuf ARGS_DECL((char *psz_buf)); 109 110extern int ReadExtendedCmd ARGS_DECL((FILE *FP, char *Inbuf)); 111extern int ReadExtendedCmdInfo ARGS_DECL((FILE *FP, char *Inbuf)); 112extern int ReadCmd ARGS_DECL((FILE *FP, char *Inbuf)); 113extern int ReadBeforeImage ARGS_DECL((FILE *FP, char *Inbuf)); 114extern int ReadAfterPositions ARGS_DECL((FILE *FP, char *Inbuf)); 115extern int ReadAfterImage ARGS_DECL((FILE *FP, char *Inbuf)); 116extern void FindCmdInsertionPoint ARGS_DECL((struct CmdRec *cmd_to_insert, 117 struct CmdRec **pp_immed_right_cmd)); 118extern void FindShadowCmdInsertionPoint ARGS_DECL(( 119 struct CmdRec *cmd_to_insert, 120 struct CmdRec **pp_immed_right_cmd)); 121extern void CleanUpObsoletedWBCmds ARGS_DECL((struct CmdRec *)); 122extern void ProcessRemoteCmd ARGS_DECL((char *psz_content_type, 123 char *psz_buf, int buf_sz)); 124 125/* =================== Handle New User Requests =================== */ 126 127extern void HandleNewUserRequest ARGS_DECL((void)); 128 129/* =================== Init and CleanUp Functions =================== */ 130 131extern void CleanUpWhiteBoard ARGS_DECL((void)); 132extern int InitWhiteBoard ARGS_DECL((void)); 133extern int InitWhiteBoard2 ARGS_DECL((void)); 134extern void RMcallback_terminate ARGS_DECL((void)); 135 136#ifdef _INCLUDE_FROM_WB_C_ 137#undef extern 138#ifndef _NO_RECURSIVE_EXTERN 139#define extern extern 140#endif /* ~_NO_RECURSIVE_EXTERN */ 141#endif /*_INCLUDE_FROM_WB_C_*/ 142 143#endif /*_WB_E_*/ 144