summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_port_memory.h (follow)
AgeCommit message (Collapse)AuthorFilesLines
2017-10-19Introducing mmap_handler to count references to shared memory.Max Romanov1-2/+3
"All problems in computer science can be solved by another level of indirection" Butler Lampson Completion handlers for application response buffers executed after sending the data to client. Application worker can be stopped right after send response buffers to router. Worker stop causes removal of all data structures for the worker. To prevent shared memory segment unmap, need to count the number of buffers which uses it. So instead of direct reference to shared memory, need to reference to intermediate 'handler' structure with use counter and pointer to shared memory.
2017-10-19Supporting concurrent shared memory fd receive in router.Max Romanov1-4/+1
Two different router threads may send different requests to single application worker. In this case shared memory fds from worker to router will be send over 2 different router ports. These fds will be received and processed by different threads in any order. This patch made possible to add incoming shared memory segments in arbitrary order. Additionally, array and memory pool are no longer used to store segments because of pool's single threaded nature. Custom array-like structure nxt_port_mmaps_t introduced.
2017-08-11Request body read state implemented.Max Romanov1-1/+1
With specific timeout and buffer size settings.
2017-08-02Added basic port error handler.Max Romanov1-5/+0
2017-07-12New process port exchange changed. READY message type introduced.Max Romanov1-0/+2
Application process start request DATA message from router to master. Master notifies router via NEW_PORT message after worker process become ready.
2017-06-23Moved message size to nxt_port_recv_msg_t for convenience.Max Romanov1-1/+1
2017-06-23Store pointer to shared memory start in buf->parent.Max Romanov1-1/+11
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-05-12Using shared memory to send data via nxt_port.Max Romanov1-0/+50
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);