Max Romanov
be36cf52c8
Introducing application 'atexit' hook.
...
Finalizing Python interpreter.
This closes #65 issue on GitHub.
2017-12-27 14:02:11 +03:00
Max Romanov
e44401a0bb
Introducing process use counter.
...
This helps to decouple process removal from port memory pool cleanups.
2017-10-04 15:02:11 +03:00
Max Romanov
6a64533fa3
Introducing use counters for port and app. Thread safe port write.
...
Use counter helps to simplify logic around port and application free.
Port 'post' function introduced to simplify post execution of particular
function to original port engine's thread.
Write message queue is protected by mutex which makes port write operation
thread safe.
2017-10-04 14:58:47 +03:00
Valentin Bartenev
4953e5b5cb
Configuration persistence.
...
Now configuration survives server reloads.
2017-09-10 06:22:15 +03:00
Igor Sysoev
9d487df10d
The master process has been renamed to the main process.
2017-08-29 02:59:35 +03:00
Igor Sysoev
0d65c896cf
Added configure and command line option --control.
2017-08-26 13:37:44 +03:00
Igor Sysoev
7f5b57bfb9
Added configure and command line option --modules.
2017-08-26 13:37:44 +03:00
Igor Sysoev
e64494ba2c
Added configure option --pid=FILE.
...
A pid file name can be relative.
The default pid file name is "nginext.pid".
2017-08-26 13:37:44 +03:00
Igor Sysoev
d3a6d7805f
Added configure options --prefix=PATH and --log=FILE.
...
A prefix is prepended to all relative names at configure stage.
There is no prefix by default.
A log file name can be relative.
The default log file name is "nginext.log".
2017-08-26 13:37:44 +03:00
Igor Sysoev
b84aa64dcb
Removed configure option --no-threads.
2017-08-24 17:43:32 +03:00
Igor Sysoev
259b90b9d7
Removed command line option --workers.
2017-08-24 17:29:53 +03:00
Igor Sysoev
949548da29
The new module configuration interface.
...
Configuration and building example:
./configure
./configure python
./configure php
./configure go
make all
or
./configure
make nginext
./configure python
make python
./configure php
make php
./configure go
make go
Modules configuration options and building examples:
./configure python --module=python2 --config=python2.7-config
make python2
./configure php --module=php7 --config=php7.0-config
--lib-path=/usr/local/php7.0
make php7
./configure go --go=go1.6 --go-path=${HOME}/go1.6
make go1.6
2017-08-17 21:47:19 +03:00
Max Romanov
f23f985899
Runtime processes protected with mutex.
2017-08-02 13:22:07 +03:00
Max Romanov
bcf99f87e2
Using port rpc in controller->router configuration update.
2017-08-02 13:20:57 +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
Valentin Bartenev
c38bcb7d70
Controller: proper reconfiguration requests handling.
...
Now controller serializes all reconfiguration requests
and waits for result from router.
2017-07-12 20:21:17 +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
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
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
Igor Sysoev
f888a5310c
Using new memory pool implementation.
2017-06-20 19:49:17 +03:00
Igor Sysoev
5bc011afad
Skeleton of router configuration and request processing.
2017-05-31 15:26:45 +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
Igor Sysoev
6f2c9acd18
Processes refactoring.
...
The cycle has been renamed to the runtime.
2017-03-09 18:03:27 +03:00