simplexmq
simplexmq copied to clipboard
messaging services
Agent:
- [x] finalize initial and queue subscriptions #1672
- [x] ~possibly, use flag to exclude already subscribed queues - although this API is no longer used beyond tests~
- [x] ~mark queues as associated in subscribeConnections and in subscribeAllConnections (if needed)~ (already done in AgentClient) #1671
- [x] process queue/service associations in delayed subscription results (in processSMPTransmissions) #1671
- [x] return events for service subscriptions, with count and hash mismatch indications #1671
- [x] process SALL event (maybe rename to ALLS?) - probably send agent event to chat #1671
- [x] process ENDS event #1677
- [ ] ~mark connection as deleted on DELD event (an old gap)~
- [x] account for server keyhash when loading service #1671
- [x] error when setting per-connection isolation and services at the same time - when creating an agent and when changing network settings #1670
- [x] ~possibly, register service ID in TSessionSubs when service is just connected~
- [x] disassociate all queues when service ID changes #1672
- [x] when creating new queue, validate that returned service ID is the same as in transport session (allow Nothing, for backward compatibility) #1672
- [x] ~possibly, improve service subscription error handling.~
- [x] treat BAD_SERVICE as temporary error #1672
- [x] send service subscription error #1677
- [x] differentiate temporary and permanent errors #1672
- [x] update service in the database if it has different ID, re-associate queues, and send event #1677
- [ ] ~check DB index for getting queues with service present, possibly add user_id to rcv_queues (and snd_queues?) and add index on (user_id, host, port)~
Agent tests:
- [x] test that counts and hashes match, and new events are received.
- [ ] test migration of client to and from services, and that delivery works for all queues.
- [ ] test message delivery during subscription
- [ ] possibly, test additional certificate signature
SMP server
- [x] ~maintain hashes in STM in-memory storage for NTF and RCV services~
- [x] remove option to accept service credentials, always allow them by default #1676
- [x] stats for service subscriptions and count/hash differences #1676
- [x] remove delivery threads when service is unsubscribed/client disconnected (CSADecreaseSubs) #1676
- [x] finalize subscriptions to message services - compare counts and hashes; deliver subscription errors #1676
- [x] possibly, maintain IDs hash in session states #1676
- [x] correctly handle when old clients do not provide IDs hash in requests #1676
- [x] ~possibly, remove "proxyServer" flag from SMP transport handshake~
NTF service improvements:
- [x] validate that subscription counts and hashes match in NTF server, log warnings otherwise #1676
- [x] ~stats for service subscriptions and count/hash differences in NTF server~
Questions:
- [ ] NTF server: possibly, resubscribe queues after errors (NSErr and NSService)
- [ ] SMP server: possibly, include service subscriptions in control port commands?
- [ ] allow individual subscriptions within service session to handle errors?