overmind 0.1.0-x86-freebsd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/bin/overmind +13 -0
  4. data/lib/overmind/cli.rb +93 -0
  5. data/lib/overmind/version.rb +5 -0
  6. data/lib/overmind.rb +3 -0
  7. data/libexec/overmind +0 -0
  8. data/libexec/prebuilt-tmux/bin/event_rpcgen.py +1925 -0
  9. data/libexec/prebuilt-tmux/bin/tmux +0 -0
  10. data/libexec/prebuilt-tmux/include/evdns.h +45 -0
  11. data/libexec/prebuilt-tmux/include/event.h +83 -0
  12. data/libexec/prebuilt-tmux/include/event2/buffer.h +1077 -0
  13. data/libexec/prebuilt-tmux/include/event2/buffer_compat.h +116 -0
  14. data/libexec/prebuilt-tmux/include/event2/bufferevent.h +1024 -0
  15. data/libexec/prebuilt-tmux/include/event2/bufferevent_compat.h +104 -0
  16. data/libexec/prebuilt-tmux/include/event2/bufferevent_ssl.h +134 -0
  17. data/libexec/prebuilt-tmux/include/event2/bufferevent_struct.h +116 -0
  18. data/libexec/prebuilt-tmux/include/event2/dns.h +751 -0
  19. data/libexec/prebuilt-tmux/include/event2/dns_compat.h +358 -0
  20. data/libexec/prebuilt-tmux/include/event2/dns_struct.h +80 -0
  21. data/libexec/prebuilt-tmux/include/event2/event-config.h +570 -0
  22. data/libexec/prebuilt-tmux/include/event2/event.h +1672 -0
  23. data/libexec/prebuilt-tmux/include/event2/event_compat.h +230 -0
  24. data/libexec/prebuilt-tmux/include/event2/event_struct.h +180 -0
  25. data/libexec/prebuilt-tmux/include/event2/http.h +1192 -0
  26. data/libexec/prebuilt-tmux/include/event2/http_compat.h +94 -0
  27. data/libexec/prebuilt-tmux/include/event2/http_struct.h +152 -0
  28. data/libexec/prebuilt-tmux/include/event2/keyvalq_struct.h +80 -0
  29. data/libexec/prebuilt-tmux/include/event2/listener.h +192 -0
  30. data/libexec/prebuilt-tmux/include/event2/rpc.h +626 -0
  31. data/libexec/prebuilt-tmux/include/event2/rpc_compat.h +61 -0
  32. data/libexec/prebuilt-tmux/include/event2/rpc_struct.h +114 -0
  33. data/libexec/prebuilt-tmux/include/event2/tag.h +146 -0
  34. data/libexec/prebuilt-tmux/include/event2/tag_compat.h +49 -0
  35. data/libexec/prebuilt-tmux/include/event2/thread.h +253 -0
  36. data/libexec/prebuilt-tmux/include/event2/util.h +888 -0
  37. data/libexec/prebuilt-tmux/include/event2/visibility.h +67 -0
  38. data/libexec/prebuilt-tmux/include/evhttp.h +45 -0
  39. data/libexec/prebuilt-tmux/include/evrpc.h +45 -0
  40. data/libexec/prebuilt-tmux/include/evutil.h +39 -0
  41. data/libexec/prebuilt-tmux/include/utf8proc.h +743 -0
  42. data/libexec/prebuilt-tmux/lib/libevent-2.1.7.dylib +0 -0
  43. data/libexec/prebuilt-tmux/lib/libevent.a +0 -0
  44. data/libexec/prebuilt-tmux/lib/libevent.dylib +1 -0
  45. data/libexec/prebuilt-tmux/lib/libevent.la +41 -0
  46. data/libexec/prebuilt-tmux/lib/libevent_core-2.1.7.dylib +0 -0
  47. data/libexec/prebuilt-tmux/lib/libevent_core.a +0 -0
  48. data/libexec/prebuilt-tmux/lib/libevent_core.dylib +1 -0
  49. data/libexec/prebuilt-tmux/lib/libevent_core.la +41 -0
  50. data/libexec/prebuilt-tmux/lib/libevent_extra-2.1.7.dylib +0 -0
  51. data/libexec/prebuilt-tmux/lib/libevent_extra.a +0 -0
  52. data/libexec/prebuilt-tmux/lib/libevent_extra.dylib +1 -0
  53. data/libexec/prebuilt-tmux/lib/libevent_extra.la +41 -0
  54. data/libexec/prebuilt-tmux/lib/libevent_openssl-2.1.7.dylib +0 -0
  55. data/libexec/prebuilt-tmux/lib/libevent_openssl.a +0 -0
  56. data/libexec/prebuilt-tmux/lib/libevent_openssl.dylib +1 -0
  57. data/libexec/prebuilt-tmux/lib/libevent_openssl.la +41 -0
  58. data/libexec/prebuilt-tmux/lib/libevent_pthreads-2.1.7.dylib +0 -0
  59. data/libexec/prebuilt-tmux/lib/libevent_pthreads.a +0 -0
  60. data/libexec/prebuilt-tmux/lib/libevent_pthreads.dylib +1 -0
  61. data/libexec/prebuilt-tmux/lib/libevent_pthreads.la +41 -0
  62. data/libexec/prebuilt-tmux/lib/libutf8proc.3.dylib +0 -0
  63. data/libexec/prebuilt-tmux/lib/libutf8proc.a +0 -0
  64. data/libexec/prebuilt-tmux/lib/libutf8proc.dylib +1 -0
  65. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent.pc +16 -0
  66. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_core.pc +16 -0
  67. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_extra.pc +16 -0
  68. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_openssl.pc +16 -0
  69. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_pthreads.pc +16 -0
  70. data/libexec/prebuilt-tmux/lib/pkgconfig/libutf8proc.pc +10 -0
  71. data/libexec/prebuilt-tmux/share/man/man1/tmux.1 +7242 -0
  72. data/overmind.gemspec +29 -0
  73. metadata +160 -0
@@ -0,0 +1,94 @@
1
+ /*
2
+ * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
3
+ * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ * 1. Redistributions of source code must retain the above copyright
9
+ * notice, this list of conditions and the following disclaimer.
10
+ * 2. Redistributions in binary form must reproduce the above copyright
11
+ * notice, this list of conditions and the following disclaimer in the
12
+ * documentation and/or other materials provided with the distribution.
13
+ * 3. The name of the author may not be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ #ifndef EVENT2_HTTP_COMPAT_H_INCLUDED_
28
+ #define EVENT2_HTTP_COMPAT_H_INCLUDED_
29
+
30
+ /** @file event2/http_compat.h
31
+
32
+ Potentially non-threadsafe versions of the functions in http.h: provided
33
+ only for backwards compatibility.
34
+
35
+ */
36
+
37
+ #ifdef __cplusplus
38
+ extern "C" {
39
+ #endif
40
+
41
+ #include <event2/event-config.h>
42
+ #ifdef EVENT__HAVE_SYS_TYPES_H
43
+ #include <sys/types.h>
44
+ #endif
45
+ #ifdef EVENT__HAVE_SYS_TIME_H
46
+ #include <sys/time.h>
47
+ #endif
48
+
49
+ /* For int types. */
50
+ #include <event2/util.h>
51
+
52
+ /**
53
+ * Start an HTTP server on the specified address and port
54
+ *
55
+ * @deprecated It does not allow an event base to be specified
56
+ *
57
+ * @param address the address to which the HTTP server should be bound
58
+ * @param port the port number on which the HTTP server should listen
59
+ * @return a pointer to a newly initialized evhttp server structure
60
+ * or NULL on error
61
+ */
62
+ EVENT2_EXPORT_SYMBOL
63
+ struct evhttp *evhttp_start(const char *address, ev_uint16_t port);
64
+
65
+ /**
66
+ * A connection object that can be used to for making HTTP requests. The
67
+ * connection object tries to establish the connection when it is given an
68
+ * http request object.
69
+ *
70
+ * @deprecated It does not allow an event base to be specified
71
+ */
72
+ EVENT2_EXPORT_SYMBOL
73
+ struct evhttp_connection *evhttp_connection_new(
74
+ const char *address, ev_uint16_t port);
75
+
76
+ /**
77
+ * Associates an event base with the connection - can only be called
78
+ * on a freshly created connection object that has not been used yet.
79
+ *
80
+ * @deprecated XXXX Why?
81
+ */
82
+ EVENT2_EXPORT_SYMBOL
83
+ void evhttp_connection_set_base(struct evhttp_connection *evcon,
84
+ struct event_base *base);
85
+
86
+
87
+ /** Returns the request URI */
88
+ #define evhttp_request_uri evhttp_request_get_uri
89
+
90
+ #ifdef __cplusplus
91
+ }
92
+ #endif
93
+
94
+ #endif /* EVENT2_EVENT_COMPAT_H_INCLUDED_ */
@@ -0,0 +1,152 @@
1
+ /*
2
+ * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
3
+ * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ * 1. Redistributions of source code must retain the above copyright
9
+ * notice, this list of conditions and the following disclaimer.
10
+ * 2. Redistributions in binary form must reproduce the above copyright
11
+ * notice, this list of conditions and the following disclaimer in the
12
+ * documentation and/or other materials provided with the distribution.
13
+ * 3. The name of the author may not be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ #ifndef EVENT2_HTTP_STRUCT_H_INCLUDED_
28
+ #define EVENT2_HTTP_STRUCT_H_INCLUDED_
29
+
30
+ /** @file event2/http_struct.h
31
+
32
+ Data structures for http. Using these structures may hurt forward
33
+ compatibility with later versions of Libevent: be careful!
34
+
35
+ */
36
+
37
+ #ifdef __cplusplus
38
+ extern "C" {
39
+ #endif
40
+
41
+ #include <event2/event-config.h>
42
+ #ifdef EVENT__HAVE_SYS_TYPES_H
43
+ #include <sys/types.h>
44
+ #endif
45
+ #ifdef EVENT__HAVE_SYS_TIME_H
46
+ #include <sys/time.h>
47
+ #endif
48
+
49
+ /* For int types. */
50
+ #include <event2/util.h>
51
+
52
+ /**
53
+ * the request structure that a server receives.
54
+ * WARNING: expect this structure to change. I will try to provide
55
+ * reasonable accessors.
56
+ */
57
+ struct evhttp_request {
58
+ #if defined(TAILQ_ENTRY)
59
+ TAILQ_ENTRY(evhttp_request) next;
60
+ #else
61
+ struct {
62
+ struct evhttp_request *tqe_next;
63
+ struct evhttp_request **tqe_prev;
64
+ } next;
65
+ #endif
66
+
67
+ /* the connection object that this request belongs to */
68
+ struct evhttp_connection *evcon;
69
+ int flags;
70
+ /** The request obj owns the evhttp connection and needs to free it */
71
+ #define EVHTTP_REQ_OWN_CONNECTION 0x0001
72
+ /** Request was made via a proxy */
73
+ #define EVHTTP_PROXY_REQUEST 0x0002
74
+ /** The request object is owned by the user; the user must free it */
75
+ #define EVHTTP_USER_OWNED 0x0004
76
+ /** The request will be used again upstack; freeing must be deferred */
77
+ #define EVHTTP_REQ_DEFER_FREE 0x0008
78
+ /** The request should be freed upstack */
79
+ #define EVHTTP_REQ_NEEDS_FREE 0x0010
80
+
81
+ struct evkeyvalq *input_headers;
82
+ struct evkeyvalq *output_headers;
83
+
84
+ /* address of the remote host and the port connection came from */
85
+ char *remote_host;
86
+ ev_uint16_t remote_port;
87
+
88
+ /* cache of the hostname for evhttp_request_get_host */
89
+ char *host_cache;
90
+
91
+ enum evhttp_request_kind kind;
92
+ enum evhttp_cmd_type type;
93
+
94
+ size_t headers_size;
95
+ size_t body_size;
96
+
97
+ char *uri; /* uri after HTTP request was parsed */
98
+ struct evhttp_uri *uri_elems; /* uri elements */
99
+
100
+ char major; /* HTTP Major number */
101
+ char minor; /* HTTP Minor number */
102
+
103
+ int response_code; /* HTTP Response code */
104
+ char *response_code_line; /* Readable response */
105
+
106
+ struct evbuffer *input_buffer; /* read data */
107
+ ev_int64_t ntoread;
108
+ unsigned chunked:1, /* a chunked request */
109
+ userdone:1; /* the user has sent all data */
110
+
111
+ struct evbuffer *output_buffer; /* outgoing post or data */
112
+
113
+ /* Callback */
114
+ void (*cb)(struct evhttp_request *, void *);
115
+ void *cb_arg;
116
+
117
+ /*
118
+ * Chunked data callback - call for each completed chunk if
119
+ * specified. If not specified, all the data is delivered via
120
+ * the regular callback.
121
+ */
122
+ void (*chunk_cb)(struct evhttp_request *, void *);
123
+
124
+ /*
125
+ * Callback added for forked-daapd so they can collect ICY
126
+ * (shoutcast) metadata from the http header. If return
127
+ * int is negative the connection will be closed.
128
+ */
129
+ int (*header_cb)(struct evhttp_request *, void *);
130
+
131
+ /*
132
+ * Error callback - called when error is occured.
133
+ * @see evhttp_request_error for error types.
134
+ *
135
+ * @see evhttp_request_set_error_cb()
136
+ */
137
+ void (*error_cb)(enum evhttp_request_error, void *);
138
+
139
+ /*
140
+ * Send complete callback - called when the request is actually
141
+ * sent and completed.
142
+ */
143
+ void (*on_complete_cb)(struct evhttp_request *, void *);
144
+ void *on_complete_cb_arg;
145
+ };
146
+
147
+ #ifdef __cplusplus
148
+ }
149
+ #endif
150
+
151
+ #endif /* EVENT2_HTTP_STRUCT_H_INCLUDED_ */
152
+
@@ -0,0 +1,80 @@
1
+ /*
2
+ * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
3
+ * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ * 1. Redistributions of source code must retain the above copyright
9
+ * notice, this list of conditions and the following disclaimer.
10
+ * 2. Redistributions in binary form must reproduce the above copyright
11
+ * notice, this list of conditions and the following disclaimer in the
12
+ * documentation and/or other materials provided with the distribution.
13
+ * 3. The name of the author may not be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ #ifndef EVENT2_KEYVALQ_STRUCT_H_INCLUDED_
28
+ #define EVENT2_KEYVALQ_STRUCT_H_INCLUDED_
29
+
30
+ #ifdef __cplusplus
31
+ extern "C" {
32
+ #endif
33
+
34
+ /* Fix so that people don't have to run with <sys/queue.h> */
35
+ /* XXXX This code is duplicated with event_struct.h */
36
+ #ifndef TAILQ_ENTRY
37
+ #define EVENT_DEFINED_TQENTRY_
38
+ #define TAILQ_ENTRY(type) \
39
+ struct { \
40
+ struct type *tqe_next; /* next element */ \
41
+ struct type **tqe_prev; /* address of previous next element */ \
42
+ }
43
+ #endif /* !TAILQ_ENTRY */
44
+
45
+ #ifndef TAILQ_HEAD
46
+ #define EVENT_DEFINED_TQHEAD_
47
+ #define TAILQ_HEAD(name, type) \
48
+ struct name { \
49
+ struct type *tqh_first; \
50
+ struct type **tqh_last; \
51
+ }
52
+ #endif
53
+
54
+ /*
55
+ * Key-Value pairs. Can be used for HTTP headers but also for
56
+ * query argument parsing.
57
+ */
58
+ struct evkeyval {
59
+ TAILQ_ENTRY(evkeyval) next;
60
+
61
+ char *key;
62
+ char *value;
63
+ };
64
+
65
+ TAILQ_HEAD (evkeyvalq, evkeyval);
66
+
67
+ /* XXXX This code is duplicated with event_struct.h */
68
+ #ifdef EVENT_DEFINED_TQENTRY_
69
+ #undef TAILQ_ENTRY
70
+ #endif
71
+
72
+ #ifdef EVENT_DEFINED_TQHEAD_
73
+ #undef TAILQ_HEAD
74
+ #endif
75
+
76
+ #ifdef __cplusplus
77
+ }
78
+ #endif
79
+
80
+ #endif
@@ -0,0 +1,192 @@
1
+ /*
2
+ * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
3
+ * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ * 1. Redistributions of source code must retain the above copyright
9
+ * notice, this list of conditions and the following disclaimer.
10
+ * 2. Redistributions in binary form must reproduce the above copyright
11
+ * notice, this list of conditions and the following disclaimer in the
12
+ * documentation and/or other materials provided with the distribution.
13
+ * 3. The name of the author may not be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ #ifndef EVENT2_LISTENER_H_INCLUDED_
28
+ #define EVENT2_LISTENER_H_INCLUDED_
29
+
30
+ #include <event2/visibility.h>
31
+
32
+ #ifdef __cplusplus
33
+ extern "C" {
34
+ #endif
35
+
36
+ #include <event2/event.h>
37
+
38
+ struct sockaddr;
39
+ struct evconnlistener;
40
+
41
+ /**
42
+ A callback that we invoke when a listener has a new connection.
43
+
44
+ @param listener The evconnlistener
45
+ @param fd The new file descriptor
46
+ @param addr The source address of the connection
47
+ @param socklen The length of addr
48
+ @param user_arg the pointer passed to evconnlistener_new()
49
+ */
50
+ typedef void (*evconnlistener_cb)(struct evconnlistener *, evutil_socket_t, struct sockaddr *, int socklen, void *);
51
+
52
+ /**
53
+ A callback that we invoke when a listener encounters a non-retriable error.
54
+
55
+ @param listener The evconnlistener
56
+ @param user_arg the pointer passed to evconnlistener_new()
57
+ */
58
+ typedef void (*evconnlistener_errorcb)(struct evconnlistener *, void *);
59
+
60
+ /** Flag: Indicates that we should not make incoming sockets nonblocking
61
+ * before passing them to the callback. */
62
+ #define LEV_OPT_LEAVE_SOCKETS_BLOCKING (1u<<0)
63
+ /** Flag: Indicates that freeing the listener should close the underlying
64
+ * socket. */
65
+ #define LEV_OPT_CLOSE_ON_FREE (1u<<1)
66
+ /** Flag: Indicates that we should set the close-on-exec flag, if possible */
67
+ #define LEV_OPT_CLOSE_ON_EXEC (1u<<2)
68
+ /** Flag: Indicates that we should disable the timeout (if any) between when
69
+ * this socket is closed and when we can listen again on the same port. */
70
+ #define LEV_OPT_REUSEABLE (1u<<3)
71
+ /** Flag: Indicates that the listener should be locked so it's safe to use
72
+ * from multiple threadcs at once. */
73
+ #define LEV_OPT_THREADSAFE (1u<<4)
74
+ /** Flag: Indicates that the listener should be created in disabled
75
+ * state. Use evconnlistener_enable() to enable it later. */
76
+ #define LEV_OPT_DISABLED (1u<<5)
77
+ /** Flag: Indicates that the listener should defer accept() until data is
78
+ * available, if possible. Ignored on platforms that do not support this.
79
+ *
80
+ * This option can help performance for protocols where the client transmits
81
+ * immediately after connecting. Do not use this option if your protocol
82
+ * _doesn't_ start out with the client transmitting data, since in that case
83
+ * this option will sometimes cause the kernel to never tell you about the
84
+ * connection.
85
+ *
86
+ * This option is only supported by evconnlistener_new_bind(): it can't
87
+ * work with evconnlistener_new_fd(), since the listener needs to be told
88
+ * to use the option before it is actually bound.
89
+ */
90
+ #define LEV_OPT_DEFERRED_ACCEPT (1u<<6)
91
+ /** Flag: Indicates that we ask to allow multiple servers (processes or
92
+ * threads) to bind to the same port if they each set the option.
93
+ *
94
+ * SO_REUSEPORT is what most people would expect SO_REUSEADDR to be, however
95
+ * SO_REUSEPORT does not imply SO_REUSEADDR.
96
+ *
97
+ * This is only available on Linux and kernel 3.9+
98
+ */
99
+ #define LEV_OPT_REUSEABLE_PORT (1u<<7)
100
+ /** Flag: Indicates that the listener wants to work only in IPv6 socket.
101
+ *
102
+ * According to RFC3493 and most Linux distributions, default value is to
103
+ * work in IPv4-mapped mode. If there is a requirement to bind same port
104
+ * on same ip addresses but different handlers for both IPv4 and IPv6,
105
+ * it is required to set IPV6_V6ONLY socket option to be sure that the
106
+ * code works as expected without affected by bindv6only sysctl setting in
107
+ * system.
108
+ *
109
+ * This socket option also supported by Windows.
110
+ */
111
+ #define LEV_OPT_BIND_IPV6ONLY (1u<<8)
112
+
113
+ /**
114
+ Allocate a new evconnlistener object to listen for incoming TCP connections
115
+ on a given file descriptor.
116
+
117
+ @param base The event base to associate the listener with.
118
+ @param cb A callback to be invoked when a new connection arrives. If the
119
+ callback is NULL, the listener will be treated as disabled until the
120
+ callback is set.
121
+ @param ptr A user-supplied pointer to give to the callback.
122
+ @param flags Any number of LEV_OPT_* flags
123
+ @param backlog Passed to the listen() call to determine the length of the
124
+ acceptable connection backlog. Set to -1 for a reasonable default.
125
+ Set to 0 if the socket is already listening.
126
+ @param fd The file descriptor to listen on. It must be a nonblocking
127
+ file descriptor, and it should already be bound to an appropriate
128
+ port and address.
129
+ */
130
+ EVENT2_EXPORT_SYMBOL
131
+ struct evconnlistener *evconnlistener_new(struct event_base *base,
132
+ evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,
133
+ evutil_socket_t fd);
134
+ /**
135
+ Allocate a new evconnlistener object to listen for incoming TCP connections
136
+ on a given address.
137
+
138
+ @param base The event base to associate the listener with.
139
+ @param cb A callback to be invoked when a new connection arrives. If the
140
+ callback is NULL, the listener will be treated as disabled until the
141
+ callback is set.
142
+ @param ptr A user-supplied pointer to give to the callback.
143
+ @param flags Any number of LEV_OPT_* flags
144
+ @param backlog Passed to the listen() call to determine the length of the
145
+ acceptable connection backlog. Set to -1 for a reasonable default.
146
+ @param addr The address to listen for connections on.
147
+ @param socklen The length of the address.
148
+ */
149
+ EVENT2_EXPORT_SYMBOL
150
+ struct evconnlistener *evconnlistener_new_bind(struct event_base *base,
151
+ evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,
152
+ const struct sockaddr *sa, int socklen);
153
+ /**
154
+ Disable and deallocate an evconnlistener.
155
+ */
156
+ EVENT2_EXPORT_SYMBOL
157
+ void evconnlistener_free(struct evconnlistener *lev);
158
+ /**
159
+ Re-enable an evconnlistener that has been disabled.
160
+ */
161
+ EVENT2_EXPORT_SYMBOL
162
+ int evconnlistener_enable(struct evconnlistener *lev);
163
+ /**
164
+ Stop listening for connections on an evconnlistener.
165
+ */
166
+ EVENT2_EXPORT_SYMBOL
167
+ int evconnlistener_disable(struct evconnlistener *lev);
168
+
169
+ /** Return an evconnlistener's associated event_base. */
170
+ EVENT2_EXPORT_SYMBOL
171
+ struct event_base *evconnlistener_get_base(struct evconnlistener *lev);
172
+
173
+ /** Return the socket that an evconnlistner is listening on. */
174
+ EVENT2_EXPORT_SYMBOL
175
+ evutil_socket_t evconnlistener_get_fd(struct evconnlistener *lev);
176
+
177
+ /** Change the callback on the listener to cb and its user_data to arg.
178
+ */
179
+ EVENT2_EXPORT_SYMBOL
180
+ void evconnlistener_set_cb(struct evconnlistener *lev,
181
+ evconnlistener_cb cb, void *arg);
182
+
183
+ /** Set an evconnlistener's error callback. */
184
+ EVENT2_EXPORT_SYMBOL
185
+ void evconnlistener_set_error_cb(struct evconnlistener *lev,
186
+ evconnlistener_errorcb errorcb);
187
+
188
+ #ifdef __cplusplus
189
+ }
190
+ #endif
191
+
192
+ #endif