annotate external/oscpack/TODO @ 509:0284d2152e17

Add support for outputting featutes using OSC (for use with the Wekinator, etc).
author tomwalters@google.com
date Fri, 22 Jun 2012 12:22:08 +0000
parents
children
rev   line source
tomwalters@509 1 TODO:
tomwalters@509 2
tomwalters@509 3 - consider adding the local endpoint name to PacketListener::PacketReceived() params
tomwalters@509 4
tomwalters@509 5 - consider adding ListenerThread class to support old seperate thread listener functionality, something like:
tomwalters@509 6
tomwalters@509 7 class UdpSocketListenerThread{
tomwalters@509 8 public:
tomwalters@509 9 UdpSocketListenerThread( UdpSocket& socket, Listener *listener );
tomwalters@509 10 UdpSocketListenerThread( UdpSocketReceiveMultiplexer *mux );
tomwalters@509 11 ~UdpSocketListenerThread();
tomwalters@509 12
tomwalters@509 13 void Run();
tomwalters@509 14 void Stop();
tomwalters@509 15 };
tomwalters@509 16
tomwalters@509 17 - provide some kind of automatic endianness configuration (hopefully there
tomwalters@509 18 are gcc symbols for this)
tomwalters@509 19
tomwalters@509 20 - work out a way to make the parsing classes totally safe. at a minimum this
tomwalters@509 21 means adding functions to test for invalid float/doublevalues,
tomwalters@509 22 making sure the iterators never pass the end of the message, ...
tomwalters@509 23 (passing end of message can happen if:
tomwalters@509 24 - too many args in type tags
tomwalters@509 25 a. typetags overflow message size
tomwalters@509 26 b. args fulfilling typetags overflow message size
tomwalters@509 27 - strings too long or not terminated correctly
tomwalters@509 28 - blobs too long or not terminated correctly
tomwalters@509 29
tomwalters@509 30 if the message was fully checked during construction, the end() iterator
tomwalters@509 31 could be moved back until only arguments which fit withing size() may
tomwalters@509 32 be interated (this could be none). A flag could be set to indicate that
tomwalters@509 33 something was wrong.
tomwalters@509 34
tomwalters@509 35 - other packet badness could include:
tomwalters@509 36 - time tags too far into the future (the scheduler should deal with
tomwalters@509 37 that i guess).
tomwalters@509 38 - message address patterns which aren't correctly terminated
tomwalters@509 39
tomwalters@509 40 - improve the ability to parse messages without tags (SC uses methods which
tomwalters@509 41 get the data and advance the iterator in one step.)
tomwalters@509 42 - Check* could be modified to do this - ie if typetags are not present
tomwalters@509 43 it could check that reading the field won't escape the message size
tomwalters@509 44 and return the data, or return false if some consistency
tomwalters@509 45 constraint is violated.
tomwalters@509 46 (or alternately drop support for messages without type tags)
tomwalters@509 47
tomwalters@509 48
tomwalters@509 49 - add a method to discard an inprogress message if it gets half
tomwalters@509 50 constructed and the buffer is full in OutboundPacket
tomwalters@509 51
tomwalters@509 52 - write a stress testing app which can send garbage packets to try to flush out other bugs in the parsing code.
tomwalters@509 53
tomwalters@509 54
tomwalters@509 55