source: benchmark/io/http/worker.hfa @ 329e26a

ADTast-experimentalpthread-emulationqualifiedEnum
Last change on this file since 329e26a was 329e26a, checked in by Thierry Delisle <tdelisle@…>, 23 months ago

Re-instated the isolate/multi-cluster option.

  • Property mode set to 100644
File size: 1.3 KB
RevLine 
[0aec496]1#pragma once
2
[7f0ac12]3#include <iofwd.hfa>
4#include <queueLockFree.hfa>
[0aec496]5#include <thread.hfa>
6
7extern "C" {
8        #include <sys/socket.h>
9}
10
[137974a]11#include "printer.hfa"
12
[0aec496]13//=============================================================================================
14// Worker Thread
15//=============================================================================================
16
[7f0ac12]17struct connection {
[0aec496]18        int pipe[2];
[7f0ac12]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;
[0aec496]31        int sockfd;
32        struct sockaddr * addr;
33        socklen_t * addrlen;
34        int flags;
[481ee28]35        volatile bool done;
[7f0ac12]36};
37void ?{}( AcceptWorker & this);
38void main( AcceptWorker & );
39
40
41struct PendingRead {
42        PendingRead * volatile next;
43        io_future_t f;
[ef3c383]44        struct {
[7f0ac12]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;
[137974a]72        acceptor_stats_t stats;
[0aec496]73};
[329e26a]74void ?{}( Acceptor &, int cli );
[7f0ac12]75void main( Acceptor & );
Note: See TracBrowser for help on using the repository browser.