Changeset b57db73
- Timestamp:
- Jan 16, 2021, 5:20:59 PM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 0197418
- Parents:
- 35ea4f3
- Location:
- benchmark/io/http
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
benchmark/io/http/filecache.cfa
r35ea4f3 rb57db73 209 209 210 210 [int *, int] filefds(int extra) { 211 if(!options.file_cache.path) { 212 int * data = alloc(extra); 213 return [data, 0]; 214 } 215 211 216 if(!file_cache.entries) { 212 217 abort("File cache not filled!\n"); -
benchmark/io/http/main.cfa
r35ea4f3 rb57db73 80 80 //=================== 81 81 // Parse args 82 const char * path =parse_options(argc, argv);82 parse_options(argc, argv); 83 83 84 84 //=================== 85 85 // Open Files 86 sout | "Filling cache from" | path; 87 fill_cache( path ); 86 if( options.file_cache.path ) { 87 sout | "Filling cache from" | options.file_cache.path; 88 fill_cache( options.file_cache.path ); 89 } 88 90 89 91 //=================== … … 147 149 } 148 150 149 if(options.file_cache. fixed_fds) {151 if(options.file_cache.path && options.file_cache.fixed_fds) { 150 152 register_fixed_files(cl, fds, pipe_off); 151 153 } … … 184 186 } 185 187 186 sout | "Notifying connections ";188 sout | "Notifying connections..." | nonl; flush( sout ); 187 189 for(i; options.clopts.nworkers) { 188 190 workers[i].done = true; 189 191 cancel(workers[i].cancel); 190 192 } 191 192 sout | "Shutting down socket"; 193 sout | "done"; 194 195 sout | "Shutting down socket..." | nonl; flush( sout ); 193 196 int ret = shutdown( server_fd, SHUT_RD ); 194 if( ret < 0 ) { abort( "shutdown error: (%d) %s\n", (int)errno, strerror(errno) ); } 197 if( ret < 0 ) { 198 abort( "shutdown error: (%d) %s\n", (int)errno, strerror(errno) ); 199 } 200 sout | "done"; 195 201 196 202 //=================== 197 203 // Close Socket 198 sout | "Closing Socket ";204 sout | "Closing Socket..." | nonl; flush( sout ); 199 205 ret = close( server_fd ); 200 206 if(ret < 0) { 201 207 abort( "close socket error: (%d) %s\n", (int)errno, strerror(errno) ); 202 208 } 203 sout | "Stopping connection threads..." | nonl; 209 sout | "Stopping connection threads..." | nonl; flush( sout ); 204 210 } 205 211 sout | "done"; 206 212 207 sout | "Stopping protocol threads..." | nonl; 213 sout | "Stopping protocol threads..." | nonl; flush( sout ); 208 214 deinit_protocol(); 209 215 sout | "done"; 210 216 211 sout | "Stopping processors..." | nonl; 217 sout | "Stopping processors..." | nonl; flush( sout ); 212 218 } 213 219 sout | "done"; 214 220 215 sout | "Closing splice fds..." | nonl; 221 sout | "Closing splice fds..." | nonl; flush( sout ); 216 222 for(i; pipe_cnt) { 217 223 ret = close( fds[pipe_off + i] ); … … 223 229 sout | "done"; 224 230 225 sout | "Stopping processors..." | nonl; 231 sout | "Stopping processors..." | nonl; flush( sout ); 226 232 } 227 233 sout | "done"; … … 229 235 //=================== 230 236 // Close Files 231 sout | "Closing open files..." | nonl; 232 close_cache(); 233 sout | "done"; 234 } 237 if( options.file_cache.path ) { 238 sout | "Closing open files..." | nonl; flush( sout ); 239 close_cache(); 240 sout | "done"; 241 } 242 } -
benchmark/io/http/options.cfa
r35ea4f3 rb57db73 9 9 } 10 10 11 #include <fstream.hfa> 11 12 #include <kernel.hfa> 12 13 #include <parseargs.hfa> 13 14 15 #include <stdlib.h> 14 16 #include <string.h> 15 17 … … 18 20 19 21 { // file_cache 22 0, // path 20 23 0, // open_flags; 21 24 42u, // hash_seed; … … 34 37 1, // nprocs; 35 38 1, // nworkers; 36 0, // flags;39 {}, // params; 37 40 false, // procstats 38 41 false, // viewhalts … … 41 44 }; 42 45 43 const char *parse_options( int argc, char * argv[] ) {46 void parse_options( int argc, char * argv[] ) { 44 47 bool subthrd = false; 45 48 bool eagrsub = false; … … 97 100 98 101 if( left[0] != 0p ) { 99 abort("Too many trailing arguments!\n"); 102 serr | "Too many trailing arguments!"; 103 exit(EXIT_FAILURE); 100 104 } 101 105 102 returnpath;106 options.file_cache.path = path; 103 107 } -
benchmark/io/http/options.hfa
r35ea4f3 rb57db73 11 11 12 12 struct { 13 const char * path; 13 14 int open_flags; 14 15 uint32_t hash_seed; … … 36 37 extern Options options; 37 38 38 const char *parse_options( int argc, char * argv[] );39 void parse_options( int argc, char * argv[] ); -
benchmark/io/http/protocol.cfa
r35ea4f3 rb57db73 26 26 "HTTP/1.1 400 Bad Request\nServer: HttoForall\nDate: %s \nContent-Type: text/plain\nContent-Length: 0 \n\n", 27 27 "HTTP/1.1 404 Not Found\nServer: HttoForall\nDate: %s \nContent-Type: text/plain\nContent-Length: 0 \n\n", 28 "HTTP/1.1 405 Method Not Allowed\nServer: HttoForall\nDate: %s \nContent-Type: text/plain\nContent-Length: 0 \n\n", 28 29 "HTTP/1.1 408 Request Timeout\nServer: HttoForall\nDate: %s \nContent-Type: text/plain\nContent-Length: 0 \n\n", 29 30 "HTTP/1.1 413 Payload Too Large\nServer: HttoForall\nDate: %s \nContent-Type: text/plain\nContent-Length: 0 \n\n", … … 37 38 400, 38 39 404, 40 405, 39 41 408, 40 42 413, -
benchmark/io/http/protocol.hfa
r35ea4f3 rb57db73 7 7 E400, 8 8 E404, 9 E405, 9 10 E408, 10 11 E413, -
benchmark/io/http/worker.cfa
r35ea4f3 rb57db73 97 97 } 98 98 99 if( !options.file_cache.path ) { 100 if( options.log ) { 101 sout | "=== File Not Found (" | nonl; 102 write(sout, file, name_size); 103 sout | ") ==="; 104 } 105 answer_error(fd, E405); 106 continue REQUEST; 107 } 108 99 109 // Get the fd from the file cache 100 110 int ans_fd; … … 104 114 // If we can't find the file, return 404 105 115 if( ans_fd < 0 ) { 106 sout | "=== File Not Found (" | nonl; 107 write(sout, file, name_size); 108 sout | ") ==="; 116 if( options.log ) { 117 sout | "=== File Not Found (" | nonl; 118 write(sout, file, name_size); 119 sout | ") ==="; 120 } 109 121 answer_error(fd, E404); 110 122 continue REQUEST;
Note: See TracChangeset
for help on using the changeset viewer.