source: benchmark/io/http/worker.hfa@ c4072d8e

ADT ast-experimental pthread-emulation qualifiedEnum
Last change on this file since c4072d8e was 329e26a, checked in by Thierry Delisle <tdelisle@…>, 3 years ago

Re-instated the isolate/multi-cluster option.

  • Property mode set to 100644
File size: 1.3 KB
Line 
1#pragma once
2
3#include <iofwd.hfa>
4#include <queueLockFree.hfa>
5#include <thread.hfa>
6
7extern "C" {
8 #include <sys/socket.h>
9}
10
11#include "printer.hfa"
12
13//=============================================================================================
14// Worker Thread
15//=============================================================================================
16
17struct connection {
18 int pipe[2];
19 struct {
20 sendfile_stats_t sendfile;
21 } stats;
22};
23
24static inline void ?{}( connection & this ) {
25 this.pipe[0] = -1;
26 this.pipe[1] = -1;
27}
28
29thread AcceptWorker {
30 connection conn;
31 int sockfd;
32 struct sockaddr * addr;
33 socklen_t * addrlen;
34 int flags;
35 volatile bool done;
36};
37void ?{}( AcceptWorker & this);
38void main( AcceptWorker & );
39
40
41struct PendingRead {
42 PendingRead * volatile next;
43 io_future_t f;
44 struct {
45 void * buf;
46 size_t len;
47 } in;
48 struct {
49 volatile int fd;
50 } out;
51};
52
53static inline PendingRead * volatile & ?`next ( PendingRead * node ) {
54 return node->next;
55}
56
57thread ChannelWorker {
58 connection conn;
59 volatile bool done;
60 mpsc_queue(PendingRead) * queue;
61};
62void ?{}( ChannelWorker & );
63void main( ChannelWorker & );
64
65thread Acceptor {
66 mpsc_queue(PendingRead) * queue;
67 int sockfd;
68 struct sockaddr * addr;
69 socklen_t * addrlen;
70 int flags;
71 volatile bool done;
72 acceptor_stats_t stats;
73};
74void ?{}( Acceptor &, int cli );
75void main( Acceptor & );
Note: See TracBrowser for help on using the repository browser.