blog for the day
This commit is contained in:
parent
99324eac9a
commit
94738975e7
1 changed files with 31 additions and 0 deletions
31
doc/design/assistant/blog/day_271__more_xmpp.mdwn
Normal file
31
doc/design/assistant/blog/day_271__more_xmpp.mdwn
Normal file
|
@ -0,0 +1,31 @@
|
|||
Tobias has been busy again today, creating a [[/tips/flickrannex]]
|
||||
special remote! Meanwhile, I'm thinking about providing a
|
||||
[[more complete interface|/todo/support_for_writing_external_special_remotes]]
|
||||
so that special remote programs not written in Haskell can do some of the
|
||||
things the hook special remote's simplicity doesn't allow.
|
||||
|
||||
Finally realized last night that the main problem with the XMPP push code
|
||||
was an inversion of control. Reworked it so now there are two new threads,
|
||||
XMPPSendpack and XMPPReceivePack, each with their own queue of push
|
||||
initiation requests, that run the pushes. This is a lot easier to
|
||||
understand, probably less buggy, and lets it apply some smarts to squash
|
||||
duplicate actions and pick the best request to handle next.
|
||||
|
||||
Also made the XMPP client send pings to detect when it has been disconnected
|
||||
from the server. Currently every 120 seconds, though that may change. Testing
|
||||
showed that without this, it did not notice (for at least 20 minutes) when
|
||||
it lost routing to the server. Not sure why -- I'd think the TCP connections
|
||||
should break and this throw an error -- but this will also handle any idle
|
||||
disconnection problems that some XMPP servers might have.
|
||||
|
||||
While writing that, I found myself writing this jem using
|
||||
[async](http://hackage.haskell.org/package/async), which has a comment
|
||||
much longer than the code, but basically we get 4 threads that are all
|
||||
linked, so when any dies, all do.
|
||||
|
||||
[[!format haskell """
|
||||
pinger `concurrently` sender `concurrently` receiver
|
||||
"""]]
|
||||
|
||||
Anyway, I need to run some long-running XMPP push tests to see if I've
|
||||
really ironed out all the bugs.
|
Loading…
Add table
Add a link
Reference in a new issue