Evgeny Poberezkin
5e3bc7ee6c
improve error handling ( #101 )
...
* inventory of error handling problems and types
* Change SMP protocol errors syntax
* connection errors in agent protocol (ERR CONN), STORE error -> AGENT error
* include exception in SEInternal error
* add MESSAGE errors, remove CRYPTO and SIZE errors
* agent protocol SYNTAX and AGENT errors
* BROKER errors
* group all client command (and agent response) errors
* BROKER TRANSPORT error
* simplify Client
* clean up
* transport errors
* simplify client
* parse / serialize agent errors
* differentiate crypto errors
* update errors.md
* make agent and SMP protocol errors consistent, simplify
* update doc
* test: parse / serialize protocol errors with QuickCheck
* add String to internal error
* exponential back-off when retrying to send HELLO
* refactor Client.hs
* replace fold with recursion in startTCPClient
* fail test if server did not start, refactor
* test: wait till TCP server stops
* test: refactor waiting for server to stop
* test: fail with error if server did not start/stop
2021-04-18 18:37:54 +01:00
Efim Poberezkin
bd753dbe47
agent sqlite: enable FKs in *all* db connections ( #75 )
2021-03-29 19:27:05 +04:00
Efim Poberezkin
08171e987d
agent sqlite: initialize database in home directory by default ( #74 )
2021-03-29 19:18:54 +04:00
Efim Poberezkin
b9943c359d
chat: subscribe to all connections on startup ( #70 )
2021-03-06 15:39:00 +04:00
Efim Poberezkin
11c8bee836
agent store: make newtypes for msg internal Ids ( #68 )
2021-03-04 23:19:12 +04:00
Efim Poberezkin
93e782b874
agent store: organize sender and broker fields into tuples ( #67 )
2021-03-04 23:00:00 +04:00
Efim Poberezkin
660e35d1d1
check that sqlite library is compiled with threadsafe code ( #63 )
2021-03-02 22:30:59 +04:00
Evgeny Poberezkin
a3990ea170
Types.hs -> Protocol.hs ( #62 )
2021-02-28 17:00:14 +00:00
Evgeny Poberezkin
927ff230da
Separate db connection for each TCP client connection ( #60 )
...
* use separate db connections for each TCP client connection
* refactor atomically, increast delay in tests
* increase test delay for SMP server to start
* increase SMP ping frequency
* remove comment
* separate SQLite connection per thread, to support multi-threaded mode
* remove redundant import
2021-02-28 14:59:29 +00:00
Efim Poberezkin
3af34dea8b
agent store: accept internal ts and return internal id ( #58 )
2021-02-27 15:06:51 +04:00
Efim Poberezkin
8134bb0eb9
agent store: settle naming of Rcv and Snd entities ( #55 )
2021-02-26 18:17:56 +04:00
Efim Poberezkin
dac35d8ea8
agent sqlite: merge SQLite and SQLite.Util ( #54 )
2021-02-26 18:17:56 +04:00
Efim Poberezkin
0f60c53a66
agent: save messages ( #45 )
2021-02-25 19:02:27 +04:00
Evgeny Poberezkin
435ab21e71
E2E message encryption ( #38 )
...
* RSA OAEP functions
* encrypt/decrypt using AES AEAD GSM
* fix JOIN syntax test
* encrypt/decrypt functions working
* e2e encryption!
* refactor monadic transitions
* rename liftError' to liftEitherError
* combine CryproFailable functions
2021-02-26 18:14:22 +04:00
Efim Poberezkin
7e9cfcce8c
agent sqlite: rework schema, make methods transactional, enable foreign keys ( #34 )
...
* agent sqlite: rework schema
* agent sqlite: explicitly mark primary keys as NOT NULL
* agent sqlite: adjust connections and queues fkeys
* agent sqlite: remove ack_mode from queues tables
* [WIP] agent sqlite: refactor methods
* agent sqlite: implement transactional createRcvConn
* add comment
* agent sqlite: remove ConnAlias from createRcvConn signature
* agent sqlite: implement transactional createSndConn
* agent sqlite: remove monadic stack from store util methods
* agent sqlite: refactor getConn
* agent sqlite: rename conn -> dbConn
* agent sqlite: move transactional logic to utils
* agent sqlite: remove addServer from store interface
* fix comment
* agent sqlite: refactor getRcvQueue
* agent sqlite: refactor deleteConn
* agent sqlite: remove old deleteConn
* agent sqlite: enable FKs
* agent sqlite: refactor methods upgrading connection to duplex
* agent sqlite: uncomment not implemented methods
* agent sqlite: rename methods upgrading connection to duplex
* use liftEither
* agent sqlite: refactor update queue status methods
* agent sqlite: refactor createMsg
* clean up
* fix compilation errors in src
* fix existing tests
* clean up tests
* agent sqlite: test that foreign keys are enabled
* change private members naming
* tests: expect specific error code
* clean up
* agent sqlite: consistently separate lifts from logic to their own lines
2021-02-04 19:23:43 +04:00
Efim Poberezkin
e09d3bae99
agent store: move SQLite Types -> Util ( #30 )
2021-01-25 20:14:33 +04:00
Evgeny Poberezkin
19dc7b3389
subscriptions ( #27 )
...
* subscribe connection and track subscriptions
* notify client when subscription ENDs
* tcp connection timeout
* move types
2021-02-26 18:11:22 +04:00
Efim Poberezkin
f50da16d0a
reorganize Protocol and Agent Store ( #25 )
...
* chore: move members from Server/Transmission.hs to Protocol.hs
* chore: revert qualified SMP import for server and client
* chore: fix corrId call
* chore: move common types to Common.hs
* chore: decompose SQLite.hs
* chore: rename Agent/Transmission.hs ErrorType -> AgentErrorType
* chore: move Protocol ErrorType -> Common SMPErrorType
* chore: rename Common -> Types
* chore: revert SMPErrorType -> ErrorType
2021-02-26 18:11:22 +04:00
Evgeny Poberezkin
c30a4cd1ff
sql quasi-qouter ( #26 )
2021-02-26 18:11:22 +04:00
Evgeny Poberezkin
d47b57ac87
correct variable name
2021-02-26 18:11:22 +04:00
Efim Poberezkin
c14b0251d5
agent store: add getReceiveQueue
2021-02-26 18:11:22 +04:00
Efim Poberezkin
8ab79b066d
agent store: add update queue methods ( #19 )
2021-02-26 18:11:22 +04:00
Evgeny Poberezkin
10fb667ff3
Receive messages ( #17 )
...
* framework to parse and process agent messages
* update SMPClient functions to accept private key
* process messages (WIP)
* agent: create reply queue and send REPLY message with qInfo
* refactor agent commands
* refactor processSMPTransmission
* agent: logic to process REPLY message
2021-02-26 18:11:22 +04:00
Efim Poberezkin and Evgeny Poberezkin
c1f15c9d93
tests: randomize db file name to fix io errors ( #16 )
...
* tests: check file doesn't exist in store tests after
* Revert "tests: check file doesn't exist in store tests after"
This reverts commit de624433a9 .
* [WIP] tests: randomize db file
* [WIP] tests: try runIO to get filename into after
* random db file name for agent tests
* tests: randomize DB file name
* tests: increase SMP agent start delay
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2021-02-26 18:11:22 +04:00
Efim Poberezkin
5f59fcc969
agent store: add createMsg ( #14 )
2021-01-15 19:30:11 +04:00
Efim Poberezkin
7f22dcd496
agent store: add updateQueueStatus tests
2021-01-11 19:34:30 +04:00
Efim Poberezkin
f5aaab3861
agent store: fix updateQueueStatus
2021-01-10 23:43:57 +04:00
Efim Poberezkin
b9cdc6a09d
agent store: add updateQueueStatus; TODO finalize, tests
2021-01-10 16:08:19 +04:00
Evgeny Poberezkin
ef028c135d
agent SQLiteStore: method stubs
2021-01-09 20:54:41 +00:00
Evgeny Poberezkin
394803b3cf
remove/fix compiler warnings
2021-01-09 20:48:07 +00:00
Evgeny Poberezkin
d1c5e9df7b
agent: ErrorType constructor for store errors, exceptions are caught
2021-01-09 19:55:42 +00:00
Evgeny Poberezkin
3dbdb948ae
agent: respond with INV (TODO: store exception blows up; select does not work without port
2021-01-09 19:23:32 +00:00
Evgeny Poberezkin
a1c4ce6448
refactor store: simplify
2021-01-09 13:04:13 +00:00
Evgeny Poberezkin
0d0a12f778
refactor store: m (Either e a) => ExceptT e m a
2021-01-09 11:18:52 +00:00
Evgeny Poberezkin
75f58f8ba4
remove unnecessary bindings
2021-01-09 08:31:21 +00:00
Efim Poberezkin
af5bd101cb
agent store: make create connection methods return ()
2021-01-08 15:51:33 +04:00
Efim Poberezkin
19238c6cc4
agent store: add deleteConn and tests
2021-01-07 17:58:46 +04:00
Efim Poberezkin
e692cb0119
add addRcvQueue and tests
2021-01-07 14:00:53 +04:00
Evgeny Poberezkin
51cc602bdb
agent store: refactor addSndQueue
2021-01-06 20:22:00 +00:00
Efim Poberezkin
5a6b1c67a9
add test testAddSndQueue
2021-01-06 23:01:53 +04:00
Efim Poberezkin
94d0be5d27
add test for addSndQueue
2021-01-06 22:35:04 +04:00
Efim Poberezkin
61092e8371
add implemented addSndQueue
2021-01-06 22:11:55 +04:00
Efim Poberezkin
1c32fccb39
[WIP] add addSndQueue
2021-01-06 18:03:55 +04:00
Evgeny Poberezkin
6e6ad0fb9b
agent store: getConn with tests
2021-01-05 20:31:01 +00:00
Evgeny Poberezkin
a555c4e510
agent store: getSndQueue
2021-01-05 19:42:50 +00:00
Evgeny Poberezkin
4a19602be6
agent store: getRcvQueue
2021-01-05 19:34:47 +00:00
Efim Poberezkin
a28462d496
add select functions drafts
2021-01-05 19:44:44 +04:00
Evgeny Poberezkin
5d2e77f41d
test: agent SQLite createRcvConnection
2021-01-04 20:25:02 +00:00
Efim Poberezkin
2e761b20f6
remove commented queries
2021-01-04 18:01:11 +04:00
Efim Poberezkin
9a1ffb349a
add insertSndQueue, insertSndConnection and implementation of createSndConn
2021-01-04 17:48:29 +04:00