Mercurial > hg > RemoteEditor > vim7
view src/reditor.h @ 25:2d27043cb96b first-connection
First connection to REP session manager.
author | kono |
---|---|
date | Sun, 26 Oct 2008 17:39:37 +0900 |
parents | 03814a8d0b2a |
children | 7101f8c1fa21 |
line wrap: on
line source
#define REP_PORT 8766 #define BUFFSIZE 200 #define SOCK_MAX 5 #define MAX_FDS 10 #define REPCMD_INSERT ( 6) #define REPCMD_INSERT_ACK ( 7) #define REPCMD_DELETE ( 9) #define REPCMD_DELETE_ACK ( 10) #define REPCMD_CLOSE ( 11) #define REPCMD_CLOSE_2 ( 12) #define REPCMD_NOP ( 15) #define SMCMD_JOIN ( 41) #define SMCMD_JOIN_ACK ( 42) #define SMCMD_PUT ( 45) #define SMCMD_PUT_ACK ( 46) #define SMCMD_SELECT ( 47) #define SMCMD_SELECT_ACK ( 48), #define SMCMD_SELECT0 (49) #define SMCMD_QUIT ( 53) #define SMCMD_QUIT_ACK ( 54) #define SMCMD_SM_JOIN ( 62) #define SMCMD_SM_JOIN_ACK ( 63) #define SMCMD_UPDATE ( 65) #define SMCMD_UPDATE_ACK ( 66) #define SMCMD_START_MERGE ( 75) #define SMCMD_START_MERGE_ACK ( 76) #define SMCMD_END_MERGE ( 77) #define SMCMD_QUIT_2 ( 67) #define SMCMD_QUIT_2_ACK ( 68) #define SM_EID ( -1) #define MERGE_EID ( -2) #define SMCMD_SYNC ( 83) #define SMCMD_SYNC_ACK ( 84) /* 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 */ int prevline; /* Previous Edited line */ rep_cmd *del_cmd; /* saved line for replace is kept here */ } Session; typedef struct rep { Session *shead; // linked list of session Session *slineup; // buffer of session lineup Session *cursession; BUFTYPE *scratch_buf; char *servername; char *waiting_session_name; int eid; /* editor id */ int seqno; /* sequence number of REP command*/ int prevSeq; /* sequence number of last merged command */ int smfd; /* socket connected to SessionManager */ int permit; rep_cmd *nop; char *hostname; } 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 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 void 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(int,int); extern void rep_end(); extern int rep_join(); extern int rep_put(); extern void rep_send_cur_cmdlist();