summaryrefslogtreecommitdiff
path: root/Assistant/Threads/PushNotifier.hs
Commit message (Collapse)AuthorAge
* refactor XMPP clientGravatar Joey Hess2012-11-03
|
* ignore our own client presenceGravatar Joey Hess2012-11-02
|
* xmpp buddy list trackingGravatar Joey Hess2012-11-02
|
* finished pushing Assistant monad into all relevant filesGravatar Joey Hess2012-10-30
| | | | All temporary and old functions are removed.
* cleanup daemonStatus accessorsGravatar Joey Hess2012-10-30
|
* split remaining assistant typesGravatar Joey Hess2012-10-30
|
* split out daemonstatus typesGravatar Joey Hess2012-10-30
|
* split and lift Assistant.PushesGravatar Joey Hess2012-10-29
|
* more liftingGravatar Joey Hess2012-10-29
|
* converted 6 more threadsGravatar Joey Hess2012-10-29
|
* Assistant monad, stage 2.5Gravatar Joey Hess2012-10-29
| | | | | | | | | | Converted several threads to run in the monad. Added a lot of useful combinators for working with the monad. Now the monad includes the name of the thread. Some debugging messages are disabled pending converting other threads.
* send git-annex tag in initial presenceGravatar Joey Hess2012-10-28
| | | | Will be used for finding other git-annex clients for pairing
* reconnect XMPP when NetWatcher notices a changeGravatar Joey Hess2012-10-27
|
* xmpp reconnectionGravatar Joey Hess2012-10-27
| | | | | If it managed to run for 5 minutes, reconnect immediately. Otherwise, wait 5 minutes before reconnecting.
* gnutls segfault fixedGravatar Joey Hess2012-10-26
| | | | | | | | Adjust build deps to ensure that only a fixed version of the library will be used. Also, removed the bound thread stuff, which I now think was (probably) a red herring.
* split out xmpp utilitiesGravatar Joey Hess2012-10-26
|
* run xmpp test in bound threadGravatar Joey Hess2012-10-26
|
* XMPP configuration formGravatar Joey Hess2012-10-26
| | | | | | Currently relies on SRV being set, or the JID's hostname being the server hostname and the port being default. Future work: Allow manual configuration of user name, hostname, and port.
* SRV record constructionGravatar Joey Hess2012-10-26
|
* hook up SRV lookups for XMPPGravatar Joey Hess2012-10-26
|
* convert the assistant to use a bound thread for XMPPGravatar Joey Hess2012-10-25
| | | | | | | | | | | | | | | | | | This *may* solve the segfault I was seeing when the XMPP library called startTLS. My hypothesis is as follows: * TLS is documented (http://www.gnu.org/software/gnutls/manual/gnutls.html#Thread-safety) thread safe, but only when a single thread accesses it. * forkIO threads are not bound to an OS thread, so it was possible for the threaded runtime to run part of the XMPP code on one thread, and then switch to another thread later. So, forkOS, with its bound threads, should be used for the XMPP thread. Since the crash doesn't happen reliably, I am not yet sure about this fix. Note that I kept all the other threads in the assistant unbound, because bound threads have significantly higher overhead.
* only use one push attributeGravatar Joey Hess2012-10-25
| | | | | When pushing to multiple UUIDs, combine them all into a single push attribute.
* switch from presence toggle hack to git-annex tag in presence extended contentGravatar Joey Hess2012-10-25
| | | | Push notifications are actually working over XMPP now!
* add a separate field for the JIDGravatar Joey Hess2012-10-24
|
* flip availablilityGravatar Joey Hess2012-10-24
| | | | | | | | | Seems presence notifications are not sent to clients that have marked themselves unavailable. (Testing with google talk.) This is the death knell for the presence hack, because it has to stay available, and even the toggle to unavailable and back could cause it to miss a notification. Still, flipped it so it basically works, for now.
* pull from one of the remotes in a push notificationGravatar Joey Hess2012-10-24
| | | | | Still need to do something about transfer queueing, however. This could be a real can of worms.
* initial implementation of XMPP push notifier (untested)Gravatar Joey Hess2012-10-24
| | | | | | | Lacking error handling, reconnection, credentials configuration, and doesn't actually do anything when it receives an incoming notification. Other than that, it might work! :)
* added push notifier thread, currently a no-opGravatar Joey Hess2012-10-24
Hooked up everything that needs to notify on pushes. Note that syncNewRemote does not notify. This is probably ok, and I'd need to thread more state through to make it do so. This is only set up to support a single push notification method; I didn't use a NotificationBroadcaster. Partly because I don't yet know what info about pushes needs to be communicated, so my data types are only preliminary.