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