summaryrefslogtreecommitdiffhomepage
path: root/src/nginext/nxt_go_run_ctx.h
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2017-06-23 19:20:08 +0300
committerMax Romanov <max.romanov@nginx.com>2017-06-23 19:20:08 +0300
commit4a1b59c27a8e85fc3b03c420fbc1642ce52e96cf (patch)
treec72ab253541c53dd918afc86973192416078fceb /src/nginext/nxt_go_run_ctx.h
parent5a43bd0bfd1eaa60dede7beb3206a53e8d008fa4 (diff)
downloadunit-4a1b59c27a8e85fc3b03c420fbc1642ce52e96cf.tar.gz
unit-4a1b59c27a8e85fc3b03c420fbc1642ce52e96cf.tar.bz2
External Go app request processing.
Diffstat (limited to 'src/nginext/nxt_go_run_ctx.h')
-rw-r--r--src/nginext/nxt_go_run_ctx.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/nginext/nxt_go_run_ctx.h b/src/nginext/nxt_go_run_ctx.h
new file mode 100644
index 00000000..244bd7c3
--- /dev/null
+++ b/src/nginext/nxt_go_run_ctx.h
@@ -0,0 +1,71 @@
+
+/*
+ * Copyright (C) Max Romanov
+ * Copyright (C) NGINX, Inc.
+ */
+
+#ifndef _NXT_GO_RUN_CTX_H_INCLUDED_
+#define _NXT_GO_RUN_CTX_H_INCLUDED_
+
+
+#include <nxt_main.h>
+#include <nxt_application.h>
+#include <nxt_port_memory_int.h>
+
+
+typedef struct nxt_go_process_s nxt_go_process_t;
+typedef struct nxt_port_mmap_msg_s nxt_port_mmap_msg_t;
+
+typedef struct nxt_go_msg_s nxt_go_msg_t;
+
+struct nxt_go_msg_s {
+ off_t start_offset;
+
+ nxt_port_msg_t *port_msg;
+ size_t raw_size;
+ size_t data_size;
+
+ nxt_port_mmap_msg_t *mmap_msg;
+ nxt_port_mmap_msg_t *end;
+
+ nxt_go_msg_t *next;
+};
+
+
+typedef struct {
+ nxt_go_msg_t msg;
+
+ nxt_go_process_t *process;
+
+ uint32_t nrbuf;
+ nxt_buf_t rbuf;
+
+ uint32_t nwbuf;
+ nxt_buf_t wbuf;
+ nxt_port_msg_t wport_msg;
+ nxt_port_mmap_msg_t wmmap_msg[8];
+
+ nxt_app_request_t r;
+
+ nxt_go_msg_t *msg_last;
+} nxt_go_run_ctx_t;
+
+
+void nxt_go_ctx_release_msg(nxt_go_run_ctx_t *ctx, nxt_go_msg_t *msg);
+
+nxt_int_t nxt_go_ctx_init(nxt_go_run_ctx_t *ctx, nxt_port_msg_t *port_msg,
+ size_t payload_size);
+
+void nxt_go_ctx_add_msg(nxt_go_run_ctx_t *ctx, nxt_port_msg_t *port_msg,
+ size_t size);
+
+nxt_int_t nxt_go_ctx_flush(nxt_go_run_ctx_t *ctx, int last);
+
+nxt_int_t nxt_go_ctx_write(nxt_go_run_ctx_t *ctx, void *data, size_t len);
+
+nxt_int_t nxt_go_ctx_read_size(nxt_go_run_ctx_t *ctx, size_t *size);
+
+nxt_int_t nxt_go_ctx_read_str(nxt_go_run_ctx_t *ctx, nxt_str_t *str);
+
+
+#endif /* _NXT_GO_RUN_CTX_H_INCLUDED_ */