Changes in benchmark/io/http/worker.cfa [c82af9f:d9c2284]
- File:
-
- 1 edited
-
benchmark/io/http/worker.cfa (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
benchmark/io/http/worker.cfa
rc82af9f rd9c2284 12 12 #include "filecache.hfa" 13 13 14 extern "C" {15 // extern ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);16 extern ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags);17 }18 19 ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count) {20 return splice(in_fd, offset, out_fd, 0p, count, 0);21 }22 23 24 14 //============================================================================================= 25 15 // Worker Thread 26 16 //============================================================================================= 27 17 void ?{}( Worker & this ) { 28 ((thread&)this){ "Server Worker Thread", *options. the_cluster};29 int ret = pipe(this.pipe);30 if( ret < 0 ) { abort( "pipe error: (%d) %s\n", (int)errno, strerror(errno) ); }18 ((thread&)this){ "Server Worker Thread", *options.clopts.instance }; 19 this.pipe[0] = -1; 20 this.pipe[1] = -1; 31 21 } 32 22 33 23 void main( Worker & this ) { 24 park( __cfaabi_dbg_ctx ); 25 /* paranoid */ assert( this.pipe[0] != -1 ); 26 /* paranoid */ assert( this.pipe[1] != -1 ); 27 34 28 CONNECTION: 35 while( int fd = take(wait_connect); fd >= 0) { 36 printf("New connection, waiting for requests\n"); 29 for() { 30 int fd = take(wait_connect); 31 if (fd < 0) break; 32 33 printf("New connection %d, waiting for requests\n", fd); 37 34 REQUEST: 38 35 for() { … … 43 40 44 41 // Read the http request 45 size_t len = 1024;42 size_t len = options.socket.buflen; 46 43 char buffer[len]; 47 44 printf("Reading request\n"); … … 56 53 // If this wasn't a request retrun 400 57 54 if( code != OK200 ) { 58 printf("Invalid Request \n");55 printf("Invalid Request : %d\n", code_val(code)); 59 56 answer_error(fd, code); 60 57 continue REQUEST; 61 58 } 62 59 63 printf("Request for file %.*s\n", name_size, file);60 printf("Request for file %.*s\n", (int)name_size, file); 64 61 65 62 // Get the fd from the file cache … … 90 87 //============================================================================================= 91 88 void ?{}( Acceptor & this, int sockfd, struct sockaddr * addr, socklen_t * addrlen, int flags ) { 92 ((thread&)this){ "Acceptor Thread", *options. the_cluster};89 ((thread&)this){ "Acceptor Thread", *options.clopts.instance }; 93 90 this.sockfd = sockfd; 94 91 this.addr = addr; … … 105 102 } 106 103 107 printf("New connection accepted\n");104 printf("New connection accepted\n"); 108 105 put( wait_connect, ret ); 109 }106 } 110 107 }
Note:
See TracChangeset
for help on using the changeset viewer.