-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
64 lines (59 loc) · 4.23 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
This is a more-or-less incomplete list of more or less independant tasks that
would be nice to have done for the first stable release.
Performance (Some ideas to improve performance, profile to verify!):
* callgrind suggests g_object_new requires much time, especially for objects
that are often instantianted, such as InfAdoptedRequest,
InfTextDefaultInsertOperation and InfTextDefaultDeleteOperation. Maybe we
can improve this by not initializing the member variables by properties,
but by setting them after the g_object_new() call.
* Move state vector helper functions in algorithm to InfAdoptedStateVector,
with a better O(n) implementation.
* Cache request.vector[request.user] in every request, this seems to be
used pretty often.
* Optionally compile with
- G_DISABLE_CAST_CHECKS
- G_DISABLE_ASSERT
- G_DISABLE_CHECKS
defined.
Bandwidth usage optimizations:
* Check whether we can get rid of the scope field in <group> messages PT/BR
* Send multiple messages in the same <group> container
* Allow to omit publisher if target host is publisher PT/BR
Others:
* Unify InfIo interface (IO):
- Rename InfIoFunc to InfIoWatchFunc
- Split inf_io_watch into inf_io_add_watch, inf_io_update_watch and
inf_io_remove_watch
* Split InfXmppConnection (XMPP)
- InfXmppConnection: XMPP core implementation
- InfJabberConnection: Connection to jabber server, managing roster, presence, etc. Derives from InfXmppConnection, not used on server side
- InfRawXmppConnection: InfXmlConnection implementation by sending raw messages to XMPP server (Derive from InfXmppConnection, make XMPP server create these connections (unsure: rather add a vfunc and subclass InfXmppServer?))
- InfJabberUserConnection: Implements InfXmlConnection by sending stuff to a particular Jabber user (owns InfJabberConnection)
- InfJabberDiscovery (owns InfJabberConnection)
* Make InfTextChunk reference-counted, or implement copy-on-write semantics. It is currently copied way too often. (InfText)
* Implement inf_text_chunk_insert_substring, and make use in InfTextDeleteOperation (InfText)
* Add a set_caret paramater to insert_text and erase_text of InfTextBuffer and derive a InfTextRequest with a "set-caret" flag.
* InfTextEncoding boxed type
* unconst "const GParameter* params" parameter to user_new vfunc because g_object_newv wants unconst
* Create a pseudo XML connection implementation, re-enable INF_IS_XML_CONNECTION check in inf_net_object_received
* Add accessor API in InfGtkBrowserModel, so InfGtkBrowserView does not need to call gtk_tree_model_get all the time (which unnecssarily dups/refs)
* Add append() and clear() virtual methods to InfTextBuffer. These may not have to be implemented since a default implementation can be used if no special one is provided, but it could help to speed up special operations. Make use in infd_note_plugin_text.
* Make InfcExploreRequest derive from InfcNodeRequest. This saves some code duplication in InfcBrowser.
* connection-closed signal for connection manager, where other objects (esp. session, session proxy, directory, browser) can drop their references to that connection. InfGtkBrowserStore can merge connections.
* Think about how to do method initialization
* Change the storage interface to be asynchronous
* Replace the various begin-foo signals in InfcBrowser by a begin-operation
with iter and request as parameters, detailed on the operation type
(add-node, remove-node, subscribe-session etc.). Similar with the
infc_browser_iter_get_foo_request functions (replace by a generic
infc_browser_iter_get_pending_request function).
* Support sending some special characters like bell ('\a') through XML. I had
an approach of defining custom entities for those (see inf-xmpp-connection.c
in inf_xmpp_connection_initiate()), though this didn't seem to work, and
does not seem to be allowed in XML.
* Make InfLocalPublisher take a InfdXmlServer instead of a port number. Maybe
even rename to InfPublisher, with InfDiscoveryAvahi assuming an
InfdXmppServer. Or, consider simply removing the interface, and require
people to use InfDiscoveryAvahi directly (check how well that works with
InfdServerPool).
* Rename local network, to maybe tcp (also adapt DOCS!)