Max Romanov
bcf99f87e2
Using port rpc in controller->router configuration update.
2017-08-02 13:20:57 +03:00
Max Romanov
82c0304ab8
Using port rpc in router->master start worker request.
2017-08-02 13:20:53 +03:00
Max Romanov
c93d2c7623
Include build/Makefile into main Makefile.
2017-08-02 13:18:04 +03:00
Max Romanov
f2e9afdf42
Port RPC interface introduced.
...
Usage:
1. Register handlers in incoming port with nxt_port_rpc_register_handler().
2. Use return value as a stream identifier for next nxt_port_socket_write().
2017-08-02 13:14:31 +03:00
Max Romanov
3812ffd336
Added bit flags to type parameter of nxt_port_socket_write().
...
NXT_PORT_MSG_LAST - mark message as last;
NXT_PORT_MSG_CLOSE_FD - close fd right after send;
Type constants altered to include last flag for single buffer messages.
Last sign is critical for coming port RPC layer. Handlers unregistered on last
message. Create sync buffer is not convenient, extra parameter is better.
2017-08-02 13:10:48 +03:00
Max Romanov
a7ef8481fc
Added make target 'golang-nginext-install' to install precompiled go package.
2017-08-02 13:01:54 +03:00
Max Romanov
83d7ab38ac
Using old-style packed attribute specification for compatibility.
2017-08-02 13:01:54 +03:00
Max Romanov
057c2526ee
Assign current request id to prevent port memory release.
2017-07-25 16:18:31 +03:00
Max Romanov
5a756647ff
Using engine task to avoid racing condition.
2017-07-25 16:18:31 +03:00
Max Romanov
316c77a9de
Fixed building on Solaris by Sun C.
2017-07-25 16:18:31 +03:00
Max Romanov
6b6fefa497
Request-app link introduced to prevent mp destroy for penging requests.
...
nxt_req_conn_link_t still used for lookup connection by request id.
New nxt_req_app_link_t (ra) allocated from conn->mem_pool using mp_retain().
ra stored in app->requests if there is no free worker to process request.
2017-07-18 00:21:28 +03:00
Max Romanov
31e5992f88
Using correct task for engine post.
2017-07-18 00:21:18 +03:00
Max Romanov
8ad2c3fd3a
Work queue thread assertions. Reset thread after fork.
2017-07-18 00:21:17 +03:00
Max Romanov
803855138c
Mem pool cleanup introduced.
...
Used for connection mem pool cleanup, which can be used by buffers.
Used for port mem pool to safely destroy linked process.
2017-07-18 00:21:16 +03:00
Max Romanov
eb675f2d78
Port allocation and destroy changed. Worker process stop introduced.
2017-07-18 00:21:14 +03:00
Max Romanov
47b359388c
Python: typo fixed in string processing shortcut.
2017-07-18 00:21:13 +03:00
Max Romanov
288fa85431
Array elements reallocation fixed.
2017-07-12 20:32:22 +03:00
Max Romanov
48afadfe7c
Memory pool debug enabled with NXT_DEBUG_ALLOC define.
2017-07-12 20:32:20 +03:00
Max Romanov
7d3fd1c96c
Single allocation for app conf and name.
2017-07-12 20:32:19 +03:00
Max Romanov
a97a5e8a0b
Go: worker initialization. READY message to master.
2017-07-12 20:32:18 +03:00
Max Romanov
51bbdd3338
PHP SAPI: dynamic worker initialization.
2017-07-12 20:32:17 +03:00
Max Romanov
b0c1e740cf
New process port exchange changed. READY message type introduced.
...
Application process start request DATA message from router to master.
Master notifies router via NEW_PORT message after worker process become ready.
2017-07-12 20:32:16 +03:00
Max Romanov
e41425bb1f
Router: connection destroy sequence fixed.
2017-07-07 18:16:14 +03:00
Max Romanov
9a402ea83d
Taken counter initialized for new pages.
...
Fixed crash in nxt_mp_get() when pages re-used and 'taken' contains initial
'map' value '0xFFFFFFFF'.
2017-07-07 16:01:34 +03:00
Max Romanov
e58f4ef0d0
Memory pool thread safety checks in DEBUG build and usage fixes.
2017-07-07 16:01:34 +03:00
Max Romanov
e15b975e9d
Work queue thread safety checks for DEBUG build.
2017-07-07 16:01:34 +03:00
Max Romanov
5529e9f0d1
Python initialization moved from master to worker application.
2017-07-07 16:01:34 +03:00
Max Romanov
74cda90e31
Process stop notification from master to all other processes.
...
New port message type introduced NXT_PORT_MSG_REMOVE_PID. Default handler
removes process description from nxt_runtime_t with all ports, incoming and
outgoing mmaps etc.
2017-07-07 16:01:34 +03:00
Max Romanov
61008a7c0b
Cosmetic changes to remove some annoying valgrind messages.
2017-07-07 16:01:34 +03:00
Max Romanov
264ae98d49
Using engine's task instead of listen's task.
2017-07-07 16:01:34 +03:00
Max Romanov
f319220a6c
Redirecting buffer completion handler to specific engine.
...
There is a case in router where we use port in router connection thread.
Buffers are allocated within connection memory pool which can be used only in
this router thread. sendmsg() can be postponed into main router thread and
completion handler will compare current engine and post itself to correct
engine.
2017-07-07 16:01:34 +03:00
Max Romanov
c56d2af3bc
Router: read configuration from port.
...
Controller: stub to send configuration from POST body "as is" to router.
2017-07-06 18:38:51 +03:00
Max Romanov
d28d502aa5
PHP SAPI: SERVER_NAME, SERVER_PORT and REMOTE_ADDR introduced.
2017-07-05 13:32:02 +03:00
Max Romanov
41e2678110
Python WSGI: SERVER_NAME, SERVER_PORT fixed, REMOTE_ADDR introduced.
...
Shortcut: do not iterate over String (or Bytes) return object.
Call 'close()' for return object (if present).
2017-07-05 13:31:53 +03:00
Max Romanov
f3107f3896
Complex target parser copied from NGINX.
...
nxt_app_request_header_t fields renamed:
- 'path' renamed to 'target'.
- 'path_no_query' renamed to 'path' and contains parsed value.
2017-07-05 13:31:45 +03:00
Max Romanov
44b3ad17f4
Double buf completion call on connection timeout fixed.
2017-06-26 19:58:43 +03:00
Max Romanov
d62e6c3b18
PHP post body processing fixed, default index name introduced.
2017-06-26 19:58:43 +03:00
Max Romanov
b53b7b0413
Build on Solaris 11 fixed.
2017-06-26 19:58:43 +03:00
Max Romanov
83088a0f4b
Incoming and outgoing port_mmap arrays are protected with mutexes.
2017-06-23 19:20:08 +03:00
Max Romanov
abe0d33329
Increased size of iovec when data passed using shared memory.
...
Useful for tiny shared memory segment test case.
2017-06-23 19:20:08 +03:00
Max Romanov
b8f126dcdf
Added basic HTTP request processing in router.
...
- request to connection mapping in engine;
- requests queue in connection;
- engine port creation;
- connected ports hash for each process;
- engine port data messages processing (app responses);
2017-06-23 19:20:08 +03:00
Max Romanov
4a1b59c27a
External Go app request processing.
2017-06-23 19:20:08 +03:00
Max Romanov
5a43bd0bfd
PHP app request processing.
2017-06-23 19:20:08 +03:00
Max Romanov
fa6582d9ad
Python app request processing.
2017-06-23 19:20:08 +03:00
Max Romanov
e7a0634a71
Application-side message processing.
...
Usage on the router side:
nxt_app_wmsg_t wmsg;
nxt_app_parse_ctx_t parse_ctx;
nxt_app_http_req_init(task, &parse_ctx);
/* parse incoming request data */
if (nxt_app_http_req_parse(task, &parse_ctx, buf) == NXT_DONE) {
/* choose app */
nxt_app = nxt_select_app(... &parse_ctx.r ...);
/* find port */
wmsg.port = nxt_get_app_port(... nxt_app ...);
wmsg.buf = &wmsg.write;
/* fill write message buffer in shared mem */
nxt_app->prepare_msg(task, &parse_ctx.r, &wmsg);
/* send message to app for processing */
nxt_port_socket_write(task, wmsg.port, NXT_PORT_MSG_DATA,
-1, 0, 0, wmsg.write);
}
2017-06-23 19:20:08 +03:00
Max Romanov
3b9aa27625
Added mem_pool pointer member to nxt_port_send_msg_t.
...
To decouple nxt_port_send_msg_t from port.
2017-06-23 19:20:08 +03:00
Max Romanov
eaf28db46e
Moved message size to nxt_port_recv_msg_t for convenience.
2017-06-23 19:20:08 +03:00
Max Romanov
3e989a165c
Extruded nxt_port_send_port() to send port to one process.
2017-06-23 19:20:08 +03:00
Max Romanov
0cd9521687
Store pointer to shared memory start in buf->parent.
...
nxt_port_mmap_t stored in arrays and it is unsafe to store
pointer to array element.
Shared memory structures and macros moved to separate header
file to be used by GO package.
2017-06-23 19:20:04 +03:00
Max Romanov
b13cdb0faa
Store mem_pool in buf->data instead of port for consistency.
2017-06-23 19:19:41 +03:00
Max Romanov
ac43bfcc72
nxt_process_create() changed to add process to runtime before callbacks.
2017-06-23 19:19:41 +03:00
Max Romanov
e5fe254e1e
nxt_port_create() use task instead of thread.
...
Write socket close() call moved out from nxt_port_create().
2017-06-23 19:19:41 +03:00
Max Romanov
89ab9a9d05
Shorter shared memory name generated.
2017-06-23 19:19:41 +03:00
Max Romanov
0fdcdde6c8
lvlhash for ports moved to separate files for future re-use.
2017-06-23 19:19:41 +03:00
Max Romanov
58e20da984
Runtime ports fix, add enumeration macros.
2017-06-23 19:19:41 +03:00
Max Romanov
952ec2e0ff
Fixed building test on Solaris
2017-05-12 20:41:34 +03:00
Max Romanov
f7b4bdfd89
Using shared memory to send data via nxt_port.
...
Usage:
b = nxt_port_mmap_get_buf(task, port, size);
b->mem.free = nxt_cpymem(b->mem.free, data, size);
nxt_port_socket_write(task, port, NXT_PORT_MSG_DATA, -1, 0, b);
2017-05-12 20:32:41 +03:00
Max Romanov
cfed068c1d
Macros for atomic 'OR' and 'AND' operations introduced.
...
Compiler built-ins used, where possible. Necessary configure checks added.
New macros:
nxt_atomic_or_fetch(ptr, val)
nxt_atomic_and_fetch(ptr, val)
Syntax and behaviour is similar to __sync_or_and_fetch and __sync_and_and_fetch
GCC build-ins.
2017-04-21 16:55:13 +03:00