session.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:2k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _SESSION_H
  2. #define _SESSION_H
  3. #include <stdio.h>
  4. #ifndef _GLOBAL_H
  5. #include "global.h"
  6. #endif
  7. #ifndef _PROC_H
  8. #include "proc.h"
  9. #endif
  10. #ifndef _HARDWARE_H
  11. #include "hardware.h"
  12. #endif
  13. #ifndef _FTPCLI_H
  14. #include "ftpcli.h"
  15. #endif
  16. #ifndef _TELNET_H
  17. #include "telnet.h"
  18. #endif
  19. struct ttystate {
  20. uint8 *line; /* Line buffer */
  21. uint8 *lp; /* Pointer into same */
  22. unsigned int echo:1; /* Keyboard local echoing? */
  23. unsigned int edit:1; /* Local editing? */
  24. unsigned int crnl:1; /* Translate cr to lf? */
  25. };
  26. /* Session control structure; only one entry is used at a time */
  27. struct session {
  28. unsigned index;
  29. enum {
  30. TELNET,
  31. FTP,
  32. AX25TNC,
  33. FINGER,
  34. PING,
  35. NRSESSION,
  36. COMMAND,
  37. VIEW,
  38. HOP,
  39. TIP,
  40. PPPPASS,
  41. DIAL,
  42. DQUERY,
  43. DCLIST,
  44. ITRACE,
  45. REPEAT,
  46. FAX
  47. } type;
  48. char *name; /* Name of remote host */
  49. union {
  50. struct ftpcli *ftp;
  51. struct telnet *telnet;
  52. void *p;
  53. } cb;
  54. struct proc *proc; /* Primary session process (e.g., tn recv) */
  55. struct proc *proc1; /* Secondary session process (e.g., tn xmit) */
  56. struct proc *proc2; /* Tertiary session process (e.g., upload) */
  57. FILE *network; /* Primary network socket (control for FTP) */
  58. FILE *record; /* Receive record file */
  59. FILE *upload; /* Send file */
  60. struct ttystate ttystate;
  61. FILE *input; /* Input stream */
  62. FILE *output; /* Output stream */
  63. int (*ctlproc)(int); /* Upcall  for keyboard ctls */
  64. int (*inproc)(int); /* Upcall for normal characters */
  65. struct session *parent;
  66. enum {
  67. SCROLL_INBAND,
  68. SCROLL_LOCAL
  69. } scrollmode; /* Cursor control key mode */
  70. };
  71. extern char *Sestypes[];
  72. extern unsigned Nsessions; /* Maximum number of sessions */
  73. extern long Sfsize; /* Size of scrollback file, lines */
  74. extern struct session **Sessions; /* Session descriptors themselves */
  75. extern struct session *Current; /* Always points to current session */
  76. extern struct session *Lastcurr; /* Last non-command session */
  77. extern struct session *Command; /* Pointer to command session */
  78. extern char *Cmdline; /* Last typed command line */
  79. /* In session.c: */
  80. void freesession(struct session *sp);
  81. int keywait(char *prompt,int flush);
  82. struct session *sessptr(char *cp);
  83. struct session *newsession(char *name,int type,int makecur);
  84. void sesflush(void);
  85. void upload(int unused,void *sp1,void *p);
  86. extern uint16 Lport;
  87. #define ALERT_EOF 1
  88. #endif  /* _SESSION_H */