Benjamin Sergeant
5896d3740f
(ws + cobra bots) add a cobra_to_cobra ws subcommand to subscribe to a channel and republish received events to a different channel
2020-08-31 13:45:00 -07:00
Benjamin Sergeant
73b9c0b89b
(socket servers) merge the ConnectionInfo class with the ConnectionState one, which simplify all the server apis
2020-08-28 14:55:40 -07:00
Benjamin Sergeant
08640d877f
(ws) set the main thread name, to help with debugging in XCode, gdb, lldb etc...
2020-08-26 13:38:45 -07:00
Benjamin Sergeant
ed5c63144e
(ws) cobra to python bot / take a module python name as argument foo.bar.baz instead of a path foo/bar/baz.py
2020-08-19 10:00:00 -07:00
Benjamin Sergeant
ee69aed2b0
(ws) on Linux with mbedtls, when the system ca certs are specified (the default) pick up sensible OS supplied paths (tested with CentOS and Alpine)
2020-08-19 09:31:57 -07:00
Benjamin Sergeant
fcb92f862d
(ws push_server) on the server side, stop sending and close the connection when the remote end has disconnected
2020-08-18 14:09:27 -07:00
Benjamin Sergeant
e1502017ce
(ixwebsocket) replace std::unique_ptr<unsigned char[]> with std::array for some fixed arrays (which are in C++11)
2020-08-17 16:48:26 -07:00
Benjamin Sergeant
72472f2899
IXWebSocketPerMessageDeflateCodec: use std::array instead of std::unique_ptr for a fixed size array
2020-08-17 16:36:24 -07:00
Benjamin Sergeant
42f71364ca
IXHttpClient.cpp: use std::array instead of std::unique_ptr for a fixed size array
2020-08-17 16:25:55 -07:00
Benjamin Sergeant
3dabd3a556
(ws) merge all ws_*.cpp files into a single one to speedup compilation
2020-08-15 19:30:17 -07:00
Benjamin Sergeant
0498e2fa98
IXBench.h is missing a pragma once
2020-08-15 18:58:46 -07:00
Benjamin Sergeant
2aaf59651e
(socket server) in the loop accepting connections, call select without a timeout on unix to avoid busy looping, and only wake up when a new connection happens
2020-08-15 18:32:59 -07:00
Benjamin Sergeant
cd4e51eacf
(socket server) instead of busy looping with a sleep, only wake up the GC thread when a new thread will have to be joined, (we know that thanks to the ConnectionState OnSetTerminated callback
2020-08-15 16:24:35 -07:00
Benjamin Sergeant
785842de03
(socket server) add a callback to the ConnectionState to be invoked when the connection is terminated. This will be used by the SocketServer in the future to know on time that the associated connection thread can be terminated.
2020-08-15 16:03:40 -07:00
Benjamin Sergeant
261095fa12
(socket server) do not create a select interrupt object everytime when polling for notifications while waiting for new connections, instead use a persistent one which is a member variable
2020-08-15 15:28:15 -07:00
Benjamin Sergeant
ed2ed0f7ae
(ixwebsocket client) handle HTTP redirects
2020-08-14 18:13:34 -07:00
Benjamin Sergeant
d3bcbdac26
(ws) upgrade to latest version of nlohmann json (3.9.1 from 3.2.0)
2020-08-13 22:10:38 -07:00
Benjamin Sergeant
8c5b28adce
(websocket proxy server) add ability to map different hosts to different websocket servers, using a json config file
2020-08-13 21:20:42 -07:00
Benjamin Sergeant
dcbafae35a
(ws) on macOS, with OpenSSL or MbedTLS, use /etc/ssl/cert.pem as the system certs
2020-08-12 18:55:13 -07:00
Benjamin Sergeant
b8265bf7f2
(ws) -q option imply info log level, not warning log level
2020-08-11 15:44:06 -07:00
Benjamin Sergeant
12f36b61ff
(websocket server) Handle programmer error when the server callback is not registered properly ( fix #227 )
2020-08-06 04:40:32 -07:00
Benjamin Sergeant
6e47c62c06
(ws) Add a new ws sub-command, push_server. This command runs a server which sends many messages in a loop to a websocket client. We can receive above 200,000 messages per second (cf #235 ).
2020-08-02 12:41:34 -07:00
Benjamin Sergeant
bcae7f326d
(ws) Add a new ws sub-command, echo_client. This command send a message to an echo server, and send back to a server whatever message it does receive. When connecting to a local ws echo_server, on my MacBook Pro 2015 I can send/receive around 30,000 messages per second. (cf #235 )
2020-08-02 12:09:13 -07:00
Benjamin Sergeant
6f0307fb35
(build) make using zlib optional, with the caveat that some http and websocket features are not available when zlib is absent
2020-07-31 22:54:57 -07:00
Benjamin Sergeant
2e3d625c1e
(websocket client) onProgressCallback not called for short messages on a websocket ( fix #233 )
2020-07-29 17:47:33 -07:00
Benjamin Sergeant
4d51098c86
(websocket client) heartbeat is not sent at the requested frequency ( fix #232 )
2020-07-29 11:24:42 -07:00
Benjamin Sergeant
e85f975ab0
compiler warning fixes
2020-07-28 21:46:26 -07:00
Benjamin Sergeant
dc77d62a5d
(ixcobra) CobraConnection: unsubscribe from all subscriptions when disconnecting
2020-07-28 10:32:18 -07:00
Benjamin Sergeant
4f41f209a2
(socket utility) move ix::getFreePort to ixwebsocket library
2020-07-27 18:17:13 -07:00
Benjamin Sergeant
22dffd5b7e
WebSocket::close is re-entrant
2020-07-27 17:38:33 -07:00
Benjamin Sergeant
847fc142d1
(ixwebsocket server) change legacy api with 2 nested callbacks, so that the first api takes a weak_ptr<WebSocket> as its first argument
2020-07-25 11:42:07 -07:00
Benjamin Sergeant
0388459bd0
(ixwebsocket) add WebSocketProxyServer, from ws. Still need to make the interface better.
2020-07-25 11:26:06 -07:00
Benjamin Sergeant
e34f1c30d6
(ws) port broadcast_server sub-command to the new server API
2020-07-24 14:35:07 -07:00
Benjamin Sergeant
b146e93a3a
(unittest) port most unittests to the new server API
2020-07-24 12:49:36 -07:00
Benjamin Sergeant
9957ec9724
(ws) port ws snake to the new server API
2020-07-24 12:33:17 -07:00
Benjamin Sergeant
e78019dad6
(ws) port ws transfer to the new server API
2020-07-24 11:52:16 -07:00
Benjamin Sergeant
0f026c5da2
(websocket client) reset WebSocketTransport onClose callback in the WebSocket destructor
2020-07-24 10:03:29 -07:00
Benjamin Sergeant
c26a2d5d39
(websocket server) reset client websocket callback when the connection is closed
2020-07-24 09:41:02 -07:00
Benjamin Sergeant
2798886c0b
(websocket server) add a new simpler API to handle client connections / that API does not trigger a memory leak while the previous one did
2020-07-23 19:29:41 -07:00
Benjamin Sergeant
ffde283a4b
(build) merge platform specific files which were used to have different implementations for setting a thread name into a single file, to make it easier to include every source files and build the ixwebsocket library ( fix #226 )
2020-07-17 11:58:06 -07:00
Benjamin Sergeant
f7031d0d3e
set thread name in only one file
2020-07-17 11:43:50 -07:00
Benjamin Sergeant
595e6c57df
IXSelectInterruptPipe.h included in cmake on windows but compiled out
2020-07-17 11:33:02 -07:00
Benjamin Sergeant
87709c201e
(socket server) bump default max connection count from 32 to 128
2020-07-10 17:11:11 -07:00
Benjamin Sergeant
e70d83ace1
(snake) implement super simple stream sql expression support in snake server
2020-07-10 16:10:59 -07:00
Benjamin Sergeant
b21306376b
uwp build fix + more ivp6 support
2020-07-08 12:38:55 -07:00
Benjamin Sergeant
fbd17685a1
(socket+websocket+http+redis+snake servers) expose the remote ip and remote port when a new connection is made (see #222 ) / only ipv4 is handled
2020-07-08 12:10:35 -07:00
Benjamin Sergeant
3a673575dd
clang format
2020-07-08 10:39:46 -07:00
Benjamin Sergeant
d5e51840ab
use const iterators
2020-07-08 10:34:14 -07:00
Benjamin Sergeant
543c2086b2
more templates in WebSocketTransport
2020-07-07 21:26:42 -07:00
Benjamin Sergeant
95eab59c08
WebSocketPerMessageDeflateCompressor can work with vector or std::string
2020-07-07 21:26:04 -07:00
Benjamin Sergeant
7c1b57c8cd
(cmake) change the way zlib and openssl are searched
2020-07-07 10:58:20 -07:00
Benjamin Sergeant
dddf00e3b1
(cobra python bots) remove the test which stop the bot when events do not follow cobra metrics system schema with an id and a device entry
2020-07-06 16:15:24 -07:00
Benjamin Sergeant
cc47fb1c83
(cobra bots) remove bots which is not required now that we can use Python extensions
2020-06-26 16:49:08 -07:00
Benjamin Sergeant
68c97da518
(cmake) new python code is optional and enabled at cmake time with -DUSE_PYTHON=1
2020-06-25 10:05:02 -07:00
Benjamin Sergeant
615f1778c3
new cobra to python bot (still sending to statsd)
...
values + string building can be done in python (we are embedding it)
2020-06-24 23:21:19 -07:00
Benjamin Sergeant
c45b197c85
(cobra metrics to statsd bot) fps slow frame info : do not include os name
2020-06-19 18:10:49 -07:00
Benjamin Sergeant
78713895dd
(cobra metrics to statsd bot) send info about memory warnings
2020-06-19 17:46:59 -07:00
Benjamin Sergeant
10c014bf98
(http client) fix deadlock when following redirects
2020-06-19 00:11:06 -07:00
Benjamin Sergeant
9bb3643fc7
(cobra metrics to statsd bot) send info about net requests
2020-06-18 11:25:48 -07:00
Benjamin Sergeant
565a08b229
(cobra client and bots) add batch_size subscription option for retrieving multiple messages at once
2020-06-17 17:13:45 -07:00
Benjamin Sergeant
558daf8911
(websocket) WebSocketServer is not a final class, so that users can extend it ( fix #215 )
2020-06-15 18:29:42 -07:00
Benjamin Sergeant
7ba7ff4b2a
(cobra bots) minor aesthetic change, in how we display http headers with a : then space as key value separator instead of :: with
...
no space
2020-06-15 16:09:31 -07:00
Benjamin Sergeant
aa142df486
(cobra metrics to statsd bot) change from a statsd type of gauge to a timing one
2020-06-12 13:47:01 -07:00
Benjamin Sergeant
5e200a440f
(redis cobra bots) capture most used devices in a zset
2020-06-11 18:49:45 -07:00
Benjamin Sergeant
ac9710d5d6
(ws) add bare bone redis-cli like sub-command, with command line editing powered by libnoise
2020-06-11 17:30:42 -07:00
Benjamin Sergeant
7603d1a71b
(redis cobra bots) ws cobra metrics to redis / hostname invalid parsing
2020-06-11 08:33:36 -07:00
Benjamin Sergeant
d0cd4aed5a
(redis cobra bots) xadd with maxlen + fix bug in xadd client implementation and ws cobra metrics to redis command argument parsing
2020-06-11 08:20:03 -07:00
Benjamin Sergeant
c5aadffa08
(redis cobra bots) update the cobra to redis bot to use the bot framework, and change it to report fps metrics into redis streams.
2020-06-10 22:30:55 -07:00
Benjamin Sergeant
ee8a3a52ec
compile tweak on linux + version bump
2020-06-04 15:01:16 -07:00
Benjamin Sergeant
531bd624b5
remove spaces in keys + verbose statsd
2020-06-04 14:57:36 -07:00
Benjamin Sergeant
c317100b47
(statsd cobra bots) statsd improvement: prefix does not need a dot as a suffix, message size can be larger than 256 bytes, error handling was invalid, use core logger for logging instead of std::cerr
2020-06-04 09:35:55 -07:00
Benjamin Sergeant
268f528423
httpd gzip compression / set a response header and search for gzip in the request header in case deflate is added to gzip in there
2020-06-01 17:11:42 -07:00
Benjamin Sergeant
4872b59fac
fix windows build (or operator is not supported || is required
2020-05-29 17:18:09 -07:00
Benjamin Sergeant
bb1be240ec
fix linux compile failure
2020-05-29 16:53:57 -07:00
Benjamin Sergeant
b008c97c83
(http server) support gzip compression
2020-05-29 16:49:29 -07:00
Benjamin Sergeant
16eb269e1e
bump version for (compiler fix) support clang 5 and earlier (contributed by @LunarWatcher) #206
2020-05-20 10:58:30 -07:00
Benjamin Sergeant
2319dec278
(cmake) revert CMake changes to fix #203 and be able to use an external OpenSSL
2020-05-20 10:56:58 -07:00
Olivia Zoe
f1be48aff1
Re-enable support for clang 5 and earlier ( #206 )
2020-05-20 10:56:24 -07:00
Benjamin Sergeant
54d4d81bf4
(cmake) make install cmake files optional to not conflict with vcpkg
...
See https://github.com/microsoft/vcpkg/pull/11030
2020-05-17 20:36:46 -07:00
Benjamin Sergeant
ea207d8199
(windows + tls) mbedtls is the default windows tls backend + add ability to load system certificates with mbdetls on windows
2020-05-17 20:36:46 -07:00
Benjamin Sergeant
1af39bf0eb
(ixbots) add options to limit how many messages per minute should be processed
2020-05-12 21:40:17 -07:00
Benjamin Sergeant
2e904801a0
(ixbots) add new class to configure a bot to simplify passing options around
2020-05-12 19:08:16 -07:00
Benjamin Sergeant
4773af8f2f
(openssl tls) (openssl < 1.1) logic inversion - crypto locking callback are not registered properly
2020-05-08 09:54:42 -07:00
Benjamin Sergeant
c1403df74a
(cmake) default TLS back to mbedtls on Windows Universal Platform
2020-05-08 09:31:53 -07:00
Benjamin Sergeant
0772ef7ef5
(cobra bots) add a --heartbeat_timeout option to specify when the bot should terminate because no events are received
2020-05-06 22:01:48 -07:00
Benjamin Sergeant
c030a62c8b
openSSLLockingCallback should be static
2020-05-06 16:57:53 -07:00
Benjamin Sergeant
931530b101
only register the crypto lock callback if no-one has registered them before us
2020-05-06 16:49:04 -07:00
Benjamin Sergeant
6c205b983e
(openssl tls) when OpenSSL is older than 1.1, register the crypto locking callback to be thread safe. Should fix lots of CI failures
2020-05-06 16:26:30 -07:00
Benjamin Sergeant
a65b334961
assert that the timeout is non zero in makeCancellationRequestWithTimeout
2020-05-06 15:53:27 -07:00
Benjamin Sergeant
2de8aafcbc
another windows build error in IXUdpSocket ...
2020-05-05 08:29:39 -07:00
Benjamin Sergeant
f075f586e1
fix windows compile error with UdpSocket::recvfrom
2020-05-05 08:15:01 -07:00
Benjamin Sergeant
93cb898989
fix compile error with UdpSocket::recvfrom
2020-05-05 08:03:04 -07:00
Benjamin Sergeant
2b4c06e6d2
UdpSocket::recvfrom last argument does not have to be a uint32_t
2020-05-05 07:49:07 -07:00
tostc
7337ed34a6
Added asynchronous udp receive function ( #193 )
...
* Added asynchronous udp receive function
* Remove receive_async and added low level recv, which is non-blocking.
* Remove thread include
* Moved unix include to IXNetSystem.h
2020-05-05 07:47:41 -07:00
Benjamin Sergeant
15355188d5
(http client) rework a bit PATCH pull request, fix compile error with setForceBody and initialize _forceBody to false
2020-05-05 07:43:55 -07:00
Liz3
8760c87635
add PATCH and add option to enforce a http request body write ( #195 )
...
* add PATCH and add option to enforce a http request body write
* remove private bool prop
2020-05-05 07:38:55 -07:00
Benjamin Sergeant
2786631e3b
clang-format
2020-05-04 17:19:25 -07:00
Benjamin Sergeant
4f17cd5e74
(cobra bots) do not use a queue to store messages pending processing, let the bot handle queuing
2020-05-04 15:45:11 -07:00
Benjamin Sergeant
b34d9f6a06
uwp fixes
2020-05-01 11:27:59 -07:00
Benjamin Sergeant
303f99a432
refine previous commit
2020-05-01 10:37:25 -07:00