From: Ammar Faizi <[email protected]>
To: Alviro Iskandar Setiawan <[email protected]>
Cc: Ammar Faizi <[email protected]>,
Muhammad Rizki <[email protected]>,
Kanna Scarlet <[email protected]>,
GNU/Weeb Mailing List <[email protected]>
Subject: [PATCH v1 00/22] ncns updates
Date: Sun, 21 Aug 2022 18:24:31 +0700 [thread overview]
Message-ID: <[email protected]> (raw)
Hi Al,
This series contains ncns updates. There are 22 patches in this series.
Some interesting things here are:
1) Refactor ring.
2) Refactor NodeJS interface.
3) New features:
- Support chunked upload.
Make it able to send request body progressively.
- Support custom method.
By defautlt, the chromium HTTP request will perform an HTTP GET.
Make it possible to set the HTTP method from the NodeJS. Also,
change the internal string storage to std::string, because if we
use a `const char *`, it make the lifetime management harder with
respoect to the caller.
4) Increase max ring entry.
Make it able to handle bigger ring size. I have tested this with 2G
entry and it works fine. Didn't manage to test chnet though, only
nop SQEs.
5) Various bug fixes:
- Add `-Wno-enum-constexpr-conversion` flag (fix for clang-16).
See: https://github.com/nodejs/node-addon-api/issues/1198
- Use busy-waiting for signal waiter.
Sometimes the worker stuck on sig.Wait(), it seems the signaling
mechanism was implemeted wrongly. Just use a busy-waiting which
is easier to implement. There is nothing to worry much about
wasting CPU cycle as the waiting period must be very short, if
it's not short, then something has gone very wrong!
Also, PostTask() may fail, handle this failure.
Signed-off-by: Ammar Faizi <[email protected]>
---
Ammar Faizi (22):
chnet: Add initial request body support
chnet: node: Add set_user_data support on SQE
tests/js/ring: Update the unit test to utilize set_user_data
binding.gyp: Add `-ggdb3` flag for better debugging experience
binding.gyp: Add `-Wno-enum-constexpr-conversion` flag
chnet: node: Add set_method function to set HTTP method
chnet: node: Add get_error function to return the error string
chnet: node: Add set_payload function to set HTTP req body
tests/js/ring: Add simple HTTP POST request example in NodeJS
chnet: Split construct URL req creation into a new function
chnet: Add set request header support
chnet: node: Fix unused variable warning
chnet: node: Add set request header function in NodeJS
tests/js/ring: Add more set header function test
chnet: node: Don't use static counter for data ID
tests/js/ring: Add JavaScript class wrapper example
chnet: Initial chunked request body support
chnet: Rework the chunked request body interface
chnet: ring: Refactor the ring completely
chnet: Use busy-waiting for signal waiter
chnet: ring: Bump max_entry to 2G
tests/cpp: Delete basic.cpp as it's no longer relevant
binding.gyp | 4 +-
chnet/WorkQueue.cc | 17 +-
chnet/WorkQueue.h | 5 +
chnet/chnet.cc | 321 +++++++++++++++++++++++--
chnet/chnet.h | 88 ++++++-
chnet/chnet_node.cc | 564 ++++++++++++++++++++++++++++++++++----------
chnet/chnet_node.h | 6 -
chnet/chnet_ring.cc | 466 ++++++++++++++++++------------------
chnet/chnet_ring.h | 200 +++++++++-------
chnet/common.h | 20 +-
tests/cpp/basic.cc | 97 --------
tests/cpp/ring.cc | 425 +++++++++++++++++++++++++--------
tests/index.php | 14 ++
tests/js/ring.js | 405 ++++++++++++++++++++++++++-----
14 files changed, 1874 insertions(+), 758 deletions(-)
delete mode 100644 tests/cpp/basic.cc
base-commit: 7914975d89b6cb947de27b17df13b2f4830197a1
--
Ammar Faizi
next reply other threads:[~2022-08-21 11:25 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-21 11:24 Ammar Faizi [this message]
2022-08-21 11:24 ` [PATCH v1 01/22] chnet: Add initial request body support Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 02/22] chnet: node: Add set_user_data support on SQE Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 03/22] tests/js/ring: Update the unit test to utilize set_user_data Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 04/22] binding.gyp: Add `-ggdb3` flag for better debugging experience Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 05/22] binding.gyp: Add `-Wno-enum-constexpr-conversion` flag Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 06/22] chnet: node: Add set_method function to set HTTP method Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 07/22] chnet: node: Add get_error function to return the error string Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 08/22] chnet: node: Add set_payload function to set HTTP req body Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 09/22] tests/js/ring: Add simple HTTP POST request example in NodeJS Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 10/22] chnet: Split construct URL req creation into a new function Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 11/22] chnet: Add set request header support Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 12/22] chnet: node: Fix unused variable warning Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 13/22] chnet: node: Add set request header function in NodeJS Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 14/22] tests/js/ring: Add more set header function test Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 15/22] chnet: node: Don't use static counter for data ID Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 16/22] tests/js/ring: Add JavaScript class wrapper example Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 17/22] chnet: Initial chunked request body support Ammar Faizi
2022-08-21 22:13 ` Alviro Iskandar Setiawan
2022-08-22 3:08 ` Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 18/22] chnet: Rework the chunked request body interface Ammar Faizi
2022-08-21 22:20 ` Alviro Iskandar Setiawan
2022-08-21 11:24 ` [PATCH v1 19/22] chnet: ring: Refactor the ring completely Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 20/22] chnet: Use busy-waiting for signal waiter Ammar Faizi
2022-08-21 22:29 ` Alviro Iskandar Setiawan
2022-08-21 11:24 ` [PATCH v1 21/22] chnet: ring: Bump max_entry to 2G Ammar Faizi
2022-08-21 11:24 ` [PATCH v1 22/22] tests/cpp: Delete basic.cpp as it's no longer relevant Ammar Faizi
2022-08-21 22:21 ` Alviro Iskandar Setiawan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox