- Add twisted dependency. - Start adding tests.
This shouldn't affect most uses; the function signature was wrong before.
If the wrapped function returns a deferred, return it directly. Passing it through finished was raising an assertion.
Run with `trial test/sync.py'.
This prompted a major refactor, so it's all good. It's hopefully a lot more understandable now!
Each ShetServerProtocol instance keeps track of all the nodes that it has added, and removes them upon disconnection. Nodes were not being removed from this list when rm.* was called, causing connectionLost to error, and potentially some nodes to be left hanging. This commit rectifies this.
I'm pretty sure that this was caused by a bug in loopbackAsync. This is 'fixed' by connecting the meta client via a random UNIX socket. It should be possible to fix this by basically re-implementing loopbackAsync in a not-terrible way, but that might be more work than it looks. tempfile.mktemp is used even though it's deprecated, because it's still the easiest way to do this, which is stupid. Also twisted uses it, so it's justified, right.
This fixes loads of weird bugs where clients would disconnect if they tried to send too much data, the main culprit being /meta/ls-r.
This was introduced stupidly in 6b208b6, which itself was supposed to fix a previous bug. I messed up pretty hard here.
Wow it was nasty before... it was recursive, but in a completely illogically and hilariously inefficient way. This version violates DRY slightly, but you can't have everything.
- The port (and protocol) can now be specified on the command line. - The meta client now connects directly, rather than over tcp.
This has needed doing for a while; sorry to anyone who tried to use this module on windows...
See 8a0e20c for usage.
This either calls an action, or sets a property. If the path starts with "action:", it is called as an action. If the path starts with "property:", it is set as a property. Otherwise, it is assumed to be an action.
- 'current' gets the current song, possibly in an arbitrary format as defined by the mpc man page. - 'current_song_length' gets the current song length. - 'current_song_pos' gets the position in the current song.