proxytrace.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #ifndef _PROXYTRACE_H_
  2. #define _PROXYTRACE_H_
  3. #include <stdio.h>
  4. #include <sys/types.h>
  5. typedef  unsigned int u_4bytes;       /* unsigned number - 4 bytes */
  6. typedef  unsigned short int u_2bytes; /* unsigned number - 2 bytes */
  7. typedef int method_t;
  8. const int METHOD_NONE= 0,
  9. METHOD_GET = 1,
  10. METHOD_POST = 2,
  11. METHOD_HEAD = 3,
  12. METHOD_CONNECT = 4;
  13. typedef int protocol_t;
  14. const int PROTO_NONE = 0,
  15. PROTO_HTTP = 1,
  16. PROTO_FTP = 2,
  17. PROTO_GOPHER= 3,
  18. PROTO_WAIS = 4, 
  19. PROTO_CACHEOBJ = 5,
  20. PROTO_MAX = 6;
  21. typedef int pagetype_t;
  22. const int EXT_NONE = 0,
  23. EXT_HTML = 1,
  24. EXT_GIF = 2,
  25. EXT_CGI = 3,
  26. EXT_DATA = 4,
  27. EXT_CLASS = 5,
  28. EXT_MAP = 6,
  29. EXT_JPEG = 7,
  30. EXT_MPEG = 8, 
  31. EXT_OTHER = 9;
  32. const char *MethodStr(int method);
  33. const char *ProtocolStr(int protocol);
  34. const char *ExtensionStr(int type);     /* the extension (e.g. ".html") */
  35. const char *ExtensionTypeStr(int type); /* the type (e.g. "HTML") */
  36. /* entry flags */
  37. #define  NO_PATH_FLAG 1    /* path consists of only / */
  38. #define  PORT_SPECIFIED_FLAG 2
  39. #define  NULL_PATH_ADDED_FLAG 4
  40. #define  QUERY_FOUND_FLAG 8
  41. #define  EXTENSION_SPECIFIED_FLAG 16 
  42. #define  CGI_BIN_FLAG 32
  43. struct TEntryHeader {
  44. u_4bytes  event_duration;
  45. u_4bytes  server_duration;
  46. u_4bytes  last_mod;
  47. u_4bytes  time_sec;
  48. u_4bytes  time_usec;
  49. u_4bytes  client;
  50. u_4bytes  server;
  51. u_4bytes  port;
  52. u_4bytes  path;
  53. u_4bytes  query;
  54. u_4bytes  size;
  55. };
  56. struct TEntryTail {
  57. unsigned short  status;
  58. unsigned  char  type;
  59. unsigned  char  flags;
  60.   method_t        method;
  61. protocol_t      protocol;
  62. };
  63. struct TEntry {
  64. TEntryHeader head;
  65. u_4bytes     url;    /* missing in v1 format */
  66. TEntryTail   tail;
  67. };
  68. #define  TRACE_HEADER_SIZE 8192
  69. size_t ReadHeader(FILE *in_file, void *userBuf);
  70. size_t ReadEntry(FILE *in_file, TEntry *entry);
  71. size_t ReadEntryV1(FILE *in_file, TEntry *entry);
  72. struct URL {
  73. URL(int i, int sd, int sz) : access(1), id(i), sid(sd), size(sz) {}
  74. int access; // access counts
  75. int id;
  76. int sid, size;
  77. };
  78. struct ReqLog {
  79. ReqLog() {}
  80. ReqLog(double t, unsigned int c, unsigned int s, unsigned int u) :
  81. time(t), cid(c), sid(s), url(u) {}
  82. double time;
  83. unsigned int cid, sid, url;
  84. };
  85. #endif // proxytrace.h