Benjamin Sergeant
4e2a40e031
(socket) replace a std::vector with an std::array used as a tmp buffer in Socket::readBytes
2020-11-11 21:39:31 -08: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
35630fe7ed
new makefile target + better error description in Socket::readBytes
2020-04-14 21:50:56 -07:00
Benjamin Sergeant
9f818c7acf
(socket) selectInterrupt member is an unique_ptr instead of being a shared_ptr
2020-03-24 10:00:41 -07:00
Benjamin Sergeant
4d7332c4ee
activate chat test on Windows
2020-01-13 16:44:10 -08:00
Benjamin Sergeant
df0239ae68
poll: handle POLLNVAL
2020-01-09 13:45:58 -08:00
Benjamin Sergeant
ce9db42c23
socket polling / handle more error case such as hanged socket
2020-01-09 12:26:57 -08:00
Benjamin Sergeant
a0cfaff528
Implement SSL server with OpenSSL backend / still flaky
2019-10-01 15:43:37 -07:00
Benjamin Sergeant
cd3c9d879c
reformat everything with clang-format
2019-09-23 10:25:23 -07:00
Benjamin Sergeant
ed4be773a2
Fix crash in the Linux unittest in the HTTP client code, in Socket::readBytes. Cobra Metrics Publisher code returns the message id of the message that got published, to be used to validated that it got sent properly when receiving an ack.
2019-09-21 09:23:58 -07:00
Benjamin Sergeant
e2121d809e
fix unittest warnings + remove trailing spaces
2019-09-12 11:43:52 -07:00
Benjamin Sergeant
7080c5679f
move poll wrapper on top of select (only used on Windows) to the ix namespace
2019-09-08 11:15:08 -07:00
Benjamin Sergeant
ff75846d2d
Windows: use select instead of WSAPoll, through a poll wrapper
2019-08-22 10:34:17 -07:00
Benjamin Sergeant
142987259c
fix #101 / wrong include in IXSocket.cpp on Windows
2019-08-19 22:19:39 -07:00
Benjamin Sergeant
ffecef901a
fix #99 / Connect error descriptions are invalid
2019-08-13 10:49:11 -07:00
Benjamin Sergeant
3750781bce
simplify IXDNSLookup
2019-06-26 16:25:07 -07:00
Benjamin Sergeant
6b8aa43ec0
switch from select to poll to deal with Android 9 giving us high socket fds when calling ::connect
2019-06-25 17:11:27 -07:00
Benjamin Sergeant
e8a20c7e8a
refactor select code + add protection against large fds (cf Android 9)
2019-06-25 15:41:39 -07:00
Benjamin Sergeant
4a600c2611
select refactoring IXSocket::select -> IXSocket::poll
2019-06-25 10:16:40 -07:00
Benjamin Sergeant
f84bc53c8d
Feature/httpd ( #94 )
...
* Stub code for http server
* can send a response, cannot process body yet
* write headers to the response
* remove commented code
* add simple test + set default http handler
* tweak CI + unittest
* add missing file
* rewrite http::trim in a simple way
* doc
2019-06-23 14:54:21 -07:00
Benjamin Sergeant
13c87e38ed
do not select on a closed file descriptor (doing so crash on Android)
2019-05-22 18:58:22 -07:00
Benjamin Sergeant
c935be6a49
Revert "Revert "fix cast warning caught on windows""
...
This reverts commit 25eaf730bc
.
2019-05-13 22:16:49 -07:00
Benjamin Sergeant
4ee502fa1a
Revert "fix cast warning caught on windows"
...
This reverts commit 4edb7447df
.
2019-05-13 21:35:34 -07:00
Benjamin Sergeant
084805b248
fix cast warning caught on windows
2019-05-13 21:29:47 -07:00
Dimon4eg
be2aee3354
fix for Windows ( #69 )
...
* fix for Windows
* fix condition
* make condition only on Windows
2019-05-12 22:21:56 -07:00
Benjamin Sergeant
dc1f9fb243
use spdlog for logging in ws + unittest + remove un-needed mutex
2019-05-09 15:30:44 -07:00
Kumamon38
1eb98cc74f
fix ping, fix send frame close ( #49 )
...
* fix ping, fix send frame close
* fixes for data race on _closeCode etc. and fix test
* fixing one TC
* fix waiting forever if no time to change of readyState, and poll never end
* add 1005 code if no status code received
* fixes for 1005 code
* fix test issue
* fix macOS issue
* revert to master tests and renaming
2019-05-09 09:21:05 -07:00
Dimon4eg
16e5b08a0f
Remove redundant iostream includes ( #60 )
2019-05-08 13:33:21 -07:00
Dimon4eg
8ad47a315b
Fix windows ( #51 )
...
* More fixes for Windows
* fix tests for windows
* qf for linux
* clean up
2019-05-06 12:22:57 -07:00
Dimon4eg
4d83dab4f3
Fix for windows ( #50 )
2019-05-06 09:13:42 -07:00
Benjamin Sergeant
5370201df8
add locks around Socket::send and Socket::recv to see if it helps with thread sanitizer error in Linux CI
2019-04-19 14:28:51 -07:00
Benjamin Sergeant
03f762db86
Socket::Poll does not need a callback
2019-04-19 09:32:49 -07:00
Dimon4eg
401fc39879
fix windows build ( #29 )
...
* fix windows build
* fix for Unix
* Fix build if TLS is OFF
* add OpenSSL req to ws
* Fix build on Mac
* fix tests for windows
2019-04-16 08:51:57 -07:00
Benjamin Sergeant
0635313566
Feature/redis ( #23 )
...
* Fix warning
* (cmake) add a warning about 32/64 conversion problems.
* simple redis clients
* can publish to redis
* redis subscribe
* display messages received per second
* verbose flag
* (cmake) use clang only compile option -Wshorten-64-to-32 when compiling with clang
2019-03-20 14:29:02 -07:00
Benjamin Sergeant
523a6e989a
make PollResultType an enum class
2019-03-19 09:29:57 -07:00
Benjamin Sergeant
13f4aee5ee
fix bug with isReadyToWrite
2019-03-18 22:05:04 -07:00
Benjamin Sergeant
eb6ee52aaa
use milliseconds
2019-03-18 20:17:44 -07:00
Benjamin Sergeant
572a217050
no default parameters for isReadyToWrite and isReadyToRead
2019-03-18 14:31:21 -07:00
Benjamin Sergeant
d58798e36c
when trying to flush the send buffer, use select to wait until it is possible instead of using sleep to retry at a given frequency
2019-03-18 14:25:27 -07:00
Benjamin Sergeant
b91dc77d6f
select interrupt cleanup
2019-03-14 18:37:38 -07:00
Benjamin Sergeant
b5e7fb20b6
replace uint8_t with uint64_t for the send/close requests types / use named variable to index into the _fildes array
2019-03-14 15:03:57 -07:00
Benjamin Sergeant
08c2cdbf1d
send can fail silently when sending would block (EWOULDBLOCK return for send) ( #18 )
...
* try to use a pipe for communication
* flush send buffer on the background thread
* cleanup
* linux fix / linux still use event fd for now
* cleanup
2019-03-13 23:09:45 -07:00
Benjamin Sergeant
c202f8cf1d
Socket code refactoring, plus stop polling with a 1s timeout in readBytes while we only want to poll with a 1ms timeout
2019-03-04 13:40:15 -08:00
Benjamin Sergeant
0c226c7629
readBytes does not read bytes one by one but in chunks
2019-03-02 21:11:16 -08:00
Benjamin Sergeant
a9e772f330
create a blocking + cancellable Socket::readBytes method
2019-03-02 15:16:46 -08:00
Benjamin Sergeant
86cc76388e
create a blocking + cancellable Socket::readBytes method
2019-03-02 11:01:51 -08:00
Benjamin Sergeant
932bb732e0
Feature/send large message ( #14 )
...
* introduce send fragment
* can pass a fin frame
* can send messages which are a perfect multiple of the chunk size
* set fin only for last fragment
* cleanup
* last fragment should be of type CONTINUATION
* Add simple send and receive programs
* speedups receiving + better way to wait for thing
* receive speedup by using linked list of chunks instead of large array
* document bug
* use chunks to receive data
* trailing spaces
2019-02-20 18:59:07 -08:00
Benjamin Sergeant
907605c59c
windows build fix
2019-01-27 10:46:02 -08:00
Benjamin Sergeant
58921592c8
constexpr to declare number of fds
2019-01-26 21:01:36 -08:00
Benjamin Sergeant
b9c49c38ed
linux fix
2019-01-26 20:57:48 -08:00