Changeset 04b73b6 for benchmark/io/http/worker.cfa
- Timestamp:
- Jul 23, 2020, 3:37:05 PM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- f4ec4a90
- Parents:
- f0c3120 (diff), e262b5e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
benchmark/io/http/worker.cfa
rf0c3120 r04b73b6 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 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.