TODO.txt
author Chris Jones <christian.jones@sri.com>
Sat, 28 Sep 2013 13:02:17 -0600
changeset 153 bbd4166df95d
parent 152 69c5b4382e39
child 154 cd9e0ddbd5e9
permissions -rw-r--r--
Simplified the API: There's only one constructor, and it does everything necessary to initiate the stream. StartSession() and Roster.Update() have both been eliminated.

Review all the *Client receiver methods in layer3.go. They should
probably either all be receivers, or none.

Maybe put auth-related stuff into its own structure inside Client,
instead of at Client's top level.

Add a way to broadcast status information as negotiation happens or
disconnects occur. Possibly a new type of object that can be sent on
Recv along with stanzas. Or use sync.Cond to protect a state
variable.

Asynchronously updating Client.Features is not thread safe. Use a
public function GetFeatures() or similar. Same for setting the JID in
bind()?

NewClient should be synchronous, so it can update Features and JID and
leave those as values rather than functions.

Add a Reconnect() function.

Put roster and bind into separate packages, if possible.

Eliminate as many uses of Generic as possible.

Callback doesn't need to return bool. It shouldn't affect what's given
to the client.

Don't keep the password in memory once we're done with it.

Rename extension.StanzaHandlers to something like StanzaTypes.

Think about how to gracefully shutdown. Probably have a Close()
function.