- Timestamp:
- Aug 28, 2020, 2:17:36 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 56c44dc
- Parents:
- d11d6eb
- Location:
- benchmark/io/http
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified benchmark/io/http/main.cfa ¶
rd11d6eb r8e3034d 126 126 workers[i].pipe[0] = fds[pipe_off + (i * 2) + 0]; 127 127 workers[i].pipe[1] = fds[pipe_off + (i * 2) + 1]; 128 workers[i].sockfd = server_fd; 129 workers[i].addr = (struct sockaddr *)&address; 130 workers[i].addrlen = (socklen_t*)&addrlen; 131 workers[i].flags = 0; 128 132 } 129 133 unpark( workers[i] __cfaabi_dbg_ctx2 ); … … 131 135 printf("%d workers started on %d processors\n", options.clopts.nworkers, options.clopts.nprocs); 132 136 { 133 Acceptor acceptor = { server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen, 0 };134 135 137 char buffer[128]; 136 138 while(!feof(stdin)) { … … 139 141 140 142 printf("Shutting Down\n"); 141 }142 printf("Acceptor Closed\n");143 144 // Clean-up the workers145 for(options.clopts.nworkers) {146 put( wait_connect, -1 );147 143 } 148 144 } -
TabularUnified benchmark/io/http/worker.cfa ¶
rd11d6eb r8e3034d 28 28 CONNECTION: 29 29 for() { 30 int fd = take(wait_connect); 31 if (fd < 0) break; 30 int fd = cfa_accept4( this.[sockfd, addr, addrlen, flags], 0, -1`s, 0p, 0p ); 31 if(fd < 0) { 32 if( errno == ECONNABORTED ) break; 33 abort( "accept error: (%d) %s\n", (int)errno, strerror(errno) ); 34 } 32 35 33 36 printf("New connection %d, waiting for requests\n", fd); … … 82 85 } 83 86 } 84 85 //=============================================================================================86 // Acceptor Thread87 //=============================================================================================88 void ?{}( Acceptor & this, int sockfd, struct sockaddr * addr, socklen_t * addrlen, int flags ) {89 ((thread&)this){ "Acceptor Thread", *options.clopts.instance };90 this.sockfd = sockfd;91 this.addr = addr;92 this.addrlen = addrlen;93 this.flags = flags;94 }95 96 void main( Acceptor & this ) {97 for() {98 int ret = cfa_accept4( this.[sockfd, addr, addrlen, flags], 0, -1`s, 0p, 0p );99 if(ret < 0) {100 if( errno == ECONNABORTED ) break;101 abort( "accept error: (%d) %s\n", (int)errno, strerror(errno) );102 }103 104 printf("New connection accepted\n");105 put( wait_connect, ret );106 }107 } -
TabularUnified benchmark/io/http/worker.hfa ¶
rd11d6eb r8e3034d 17 17 thread Worker { 18 18 int pipe[2]; 19 };20 void ?{}( Worker & this );21 void main( Worker & );22 23 //=============================================================================================24 // Acceptor Thread25 //=============================================================================================26 thread Acceptor {27 19 int sockfd; 28 20 struct sockaddr * addr; … … 30 22 int flags; 31 23 }; 32 33 void ?{}( Acceptor & this, int sockfd, struct sockaddr * addr, socklen_t * addrlen, int flags ); 34 void main( Acceptor & this ); 24 void ?{}( Worker & this); 25 void main( Worker & );
Note: See TracChangeset
for help on using the changeset viewer.