Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

proxytrace.cc

Go to the documentation of this file.
00001 
00002 #include <stdio.h>
00003 #include "../../../autoconf.h"
00004 #ifdef STDC_HEADERS
00005 // for exit()
00006 #include <unistd.h>
00007 #include <stdlib.h>
00008 #endif /* STDC_HEADERS */
00009 
00010 #include "proxytrace.h"
00011 
00012 static 
00013 const char *MethodStrings[] = {
00014     "NONE",
00015     "GET",
00016     "POST",
00017     "HEAD",
00018     "CONNECT",
00019     "BAD#"
00020 };
00021 
00022 #define MAX_METHODS (sizeof(MethodStrings)/sizeof(*MethodStrings)-1)
00023 
00024 static
00025 const char *ProtocolStrings[] = {
00026     "NONE",
00027     "http",
00028     "ftp",
00029     "gopher",
00030     "wais",
00031     "cache_object",
00032     "TOTAL",
00033     "BAD#"
00034 };
00035 
00036 #define MAX_PROTOCOLS (sizeof(ProtocolStrings)/sizeof(*ProtocolStrings)-1)
00037 
00038 static
00039 const char *ExtensionStrings[] = {
00040         "",
00041     ".html",
00042     ".gif",
00043     ".cgi",
00044         ".data",
00045         ".class",
00046         ".map",
00047     ".jpeg",
00048     ".mpeg",
00049         ".OTHER",
00050         ".BAD#"
00051 };
00052   
00053 #define MAX_EXTENSIONS (sizeof(ExtensionStrings)/sizeof(*ExtensionStrings)-1)
00054 
00055 const char *MethodStr(int method) {
00056 
00057         if (method < 0 || method > MAX_METHODS)
00058                 method = MAX_METHODS;
00059 
00060         return MethodStrings[method];
00061 }
00062 
00063 const char *ProtocolStr(int protocol) {
00064 
00065         if (protocol < 0 || protocol > MAX_PROTOCOLS)
00066                 protocol = MAX_PROTOCOLS;
00067 
00068         return ProtocolStrings[protocol];
00069 }
00070 
00071 const char *ExtensionStr(int type) {
00072 
00073         if (type < 0 || type > MAX_EXTENSIONS)
00074                 type = MAX_EXTENSIONS;
00075 
00076         return ExtensionStrings[type];
00077 }
00078 
00079 const char *ExtensionTypeStr(int type) {
00080 
00081         return (type == 0) ? "NONE" : (ExtensionStr(type)+1);
00082 }
00083 
00084 
00085 size_t ReadHeader(FILE *in_file, void *userBuf) {
00086         static char defaultBuf[TRACE_HEADER_SIZE];
00087 
00088         void *buf = (userBuf) ? userBuf : defaultBuf;
00089 
00090         if (fread(buf, TRACE_HEADER_SIZE, 1, in_file) != 1) {
00091                 fprintf(stderr, "%s:%d error reading file header (%d bytes)\n",
00092                         __FILE__, __LINE__, TRACE_HEADER_SIZE);
00093                 exit(-2);
00094         }
00095 
00096         return TRACE_HEADER_SIZE;
00097 }
00098 
00099 size_t ReadEntry(FILE *in_file, TEntry *entry) {
00100 
00101         size_t items_read = fread(entry, sizeof(TEntry), 1, in_file);
00102 
00103         if (items_read < 0 || items_read > 1) {
00104                 fprintf(stderr, "%s:%d error reading trace entry (%u bytes)\n",
00105                         __FILE__, __LINE__, (unsigned)sizeof(TEntry));
00106                 exit(-2);
00107         }
00108 
00109         return items_read*sizeof(TEntry);
00110 }
00111 
00112 size_t ReadEntryV1(FILE *in_file, TEntry *entry) {
00113 
00114         size_t items_read = fread(&entry -> head, sizeof(TEntryHeader), 1, in_file);
00115 
00116         if (items_read == 1)
00117                 items_read = fread(&entry -> tail, sizeof(TEntryTail), 1, in_file);
00118 
00119         if (items_read < 0 || items_read > 1) {
00120                 fprintf(stderr, "%s:%d error reading v1 trace entry (%u bytes)\n",
00121                         __FILE__, __LINE__, (unsigned)(sizeof(TEntryHeader)+sizeof(TEntryTail)));
00122                 exit(-2);
00123         }
00124 
00125         entry -> url = 0; /* initialize unused field */
00126 
00127         return items_read*(sizeof(TEntryHeader)+sizeof(TEntryTail));
00128 }

Generated on Tue Apr 20 12:14:27 2004 for NS2.26SourcesOriginal by doxygen 1.3.3