Mercurial > hg > RemoteEditor > vim7
view src/reditor.h @ 1:f72be2054832
add: reditor.c reditor.h
author | atsuki |
---|---|
date | Sat, 10 Nov 2007 20:27:44 +0900 |
parents | |
children | 7c2dca099a7b |
line wrap: on
line source
#define REP_PORT 8766 //#define OTHER_REP_PORT 8765 #define BUFFSIZE 200 #define SOCK_MAX 5 #define MAX_FDS 10 #define REP_OPEN_CMD 1 #define REP_OPEN_ACK 2 #define REP_READ_CMD 3 #define REP_READ_ACK 4 #define REP_READ_FIN 5 #define REP_INSERT_CMD 6 #define REP_INSERT_STILL_ACK 7 #define REP_INSERT_FINISH_ACK 8 #define REP_DELETE_LINE_CMD 9 #define REP_DELETE_LINE_ACK 10 #define REP_CLOSE_CMD 11 #define REP_CLOSE_ACK 12 #define REP_REPLACE_CMD 13 //#define REP_CHANGE_FD_CMD 14 //#define REP_ENTER_RING_CMD 15 //#define REP_ENTER_RING_ACK 16 #define REP_JOIN_CMD 41 #define REP_JOIN_ACK 42 #define REP_GET_CMD 43 #define REP_GET_ACK 44 #define REP_PUT_CMD 45 #define REP_PUT_ACK 46 #define REP_SELECT_CMD 47 #define REP_SELECT_ACK 48 #define REP_REGISTER_CMD 49 #define REP_REGISTER_ACK 50 #define REP_DEREGISTER_CMD 51 #define REP_DEREGISTER_ACK 52 #define REP_QUIT_CMD 53 #define REP_QUIT_ACK 54 /* header and text +-------+--------+--------+-------+--------+---------+--------------+ | rep | session| editor | seqid | lineno | textsiz | text | | cmd | id | id | | | | include '\0' | +-------+--------+--------+-------+--------+---------+--------------+ o-----header section (network byte order)----------o */ /* header OFFSET */ #define REP_CMD_OFFSET 0 /* REP Command */ #define REP_SID_OFFSET 4 /* Session ID */ #define REP_EID_OFFSET 8 /* Editor ID */ #define REP_SEQNUM_OFFSET 12 /* Sequence number */ #define REP_LNUM_OFFSET 16 /* Line number */ #define REP_T_SIZE_OFFSET 20 /* TEXT size */ #define REP_TEXT_OFFSET 24 /* TEXT */ #define REP_HEADER_SIZE 24 #define REP_IGNORE 0 #define REP_AVAIL 1 #define SLINEUP_NAME "SessionLineup" #define NO_NAME "NO_NAME" /* has not name like scratch */ #define SESSION_MAX 50 #define SESSION_NAME_MAX 50 #define HOSTNAME_LEN 50 //#define UID_MAX 99 /* Wrapper for vim */ /* 扱うテキストバッファの型 */ //extern buf_T; #define BUFTYPE buf_T //#define CHAR char /* Wrapper END */ typedef struct rep_cmd { struct rep_cmd *next; unsigned int lnum; /* line number */ int stat; /* REP_AVAIL or REP_IGNORE */ unsigned int cmd; /* command id */ unsigned int sid; /* session id */ unsigned int eid; /* editor id */ unsigned int seq; /* sequence number */ unsigned int len; /* length of text */ char *pkt; /* packed rep command */ } rep_cmd; typedef struct rep_cmdlist { rep_cmd *head; int num; } rep_cmdlist; typedef struct session { struct session *next; // BUFTYPE *sbuf; /* Session Buffer */ BUFTYPE *buf; /* Editing Buffer */ unsigned int sid; unsigned int smfd; unsigned int rfd; unsigned int sfd; char *sname; rep_cmdlist new_cmdlist; /* my REP command list */ rep_cmdlist sent_cmdlist; /* my REP command list */ rep_cmdlist fromsmcmlist; /* from sm */ int permit; /* TRUE or FALSE */ // rep_cmdlist others; /* others REP command list*/ // int sbuf_changed; // unsigned short uid; /* user id */ // int usercount; /* joined user number */ // int sfd; /* send fd */ // int rfd; /* receive fd */ int prevline; /* Previous Edited line */ } Session; typedef struct rep { Session *shead; // linked list of session Session *slineup; // buffer of session lineup Session *cursession; BUFTYPE *scratch_buf; char *servername; char hostname[HOSTNAME_LEN]; char *waiting_session_name; int eid; /* editor id */ int seqno; /* sequence number of REP command*/ int smfd; /* socket connected to SessionManager */ int permit; } rep_T; // extern rep_T * get_rep(); extern int rep_permit(); extern int rep_session_permit(); extern int rep_init(); extern void rep_start_create_cmds(); extern void rep_stop_create_cmds(); extern char* rep_input_param(char*, char*); //extern int rep_connect(char*); //extern int rep_add_cmd(rep_cmdlist*,unsigned short,unsigned short,unsigned int,char*); //extern void rep_check_line_change(Session*,unsigned int); extern int rep_register(unsigned int, unsigned int, int); //extern int rep_clear_cmdlist(rep_cmdlist*); //extern int rep_recv_cmds(int fd,rep_cmdlist*); //extern int rep_send_cmds(int fd,rep_cmdlist*); extern int rep_fd_check(int, fd_set*, fd_set*); extern int rep_fd_set(fd_set*, fd_set*, int); extern int rep_select(int); extern void rep_prevline_flush(); extern void rep_end(); extern int rep_join(char *); extern int rep_select_command(char *); extern int rep_put(char *); extern void rep_send_cur_cmdlist();