* process ntf server commands
* when subscription is re-created and it was ENDed, resubscribe to SMP
* SMPClientAgent draft
* SMPClientAgent: remove double tracking of subscriptions
* subscriber frame
* PING error now throws error to restart SMPClient for more reliable re-connection (#342)
* increase TCP timeout to 5 sec
* add pragmas and vacuum db (#343)
* vacuum in each connection to enable auto-vacuum (#344)
* update protocol, token verification
* refactor SMPClient to ProtocoClient, to use with notification server protocol
* notification server client, managing notification clients in the agent
* stub for push payload
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
* notifications: protocol
* update protocol to include subscription ID and DH public key
* update protocol, started server
* add notification server subscription DH key
* use the same command type in notifications protocol, protocol parsing, server frame
* remove empty files
* use TCP keep-alive instead of SMP protocol PING
* update header files
* use CInt
* use Int again
* use network-3.1.2.7
* use https in cabal.project
* confitional keep-alive parameters to work on mac
* pass keep-alive opts via client/agent options
* remove space
* make sending confirmation asynchronous
* confirm first queue synchronously (on JOIN, and delete connection on failure), second queue asynchronously (from REPLY msg)
* test to retry JOIN when the first attempt fails
* process confirmation delivery errors
* make new smp client attempt to reconnect on network error
* reconnect async wip
* remove comments
* trigger tryReconnectClient
* add subscription before trying to take smp client
* move atomically modify asyncClients
* remove logs
* corrections
* don't put error into new smp client TMVar
* UnliftIO async
* re-work
* test for connection to the server that was initially down
* fix tests
* additionally test that bob receives the message after re-connect
* make test independent of event order
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* coalesce requests to connect to SMP servers
* fix possible race condition when creating new SMP client
* one more race condition
* close pending SMP clients