Rename interpretor to interpreter.
[Faustine.git] / interpreter / preprocessor / faust-0.9.47mr3 / architecture / osclib / oscpack / TODO
diff --git a/interpreter/preprocessor/faust-0.9.47mr3/architecture/osclib/oscpack/TODO b/interpreter/preprocessor/faust-0.9.47mr3/architecture/osclib/oscpack/TODO
new file mode 100644 (file)
index 0000000..f69bc18
--- /dev/null
@@ -0,0 +1,55 @@
+TODO:
+
+    - consider adding the local endpoint name to PacketListener::PacketReceived() params
+
+    - consider adding ListenerThread class to support old seperate thread listener functionality, something like:
+
+        class UdpSocketListenerThread{
+        public:
+            UdpSocketListenerThread( UdpSocket& socket, Listener *listener );
+            UdpSocketListenerThread( UdpSocketReceiveMultiplexer *mux );
+            ~UdpSocketListenerThread();
+
+            void Run();
+            void Stop();
+        };
+
+    - provide some kind of automatic endianness configuration (hopefully there
+        are gcc symbols for this)
+
+    - work out a way to make the parsing classes totally safe. at a minimum this
+    means adding functions to test for invalid float/doublevalues,
+    making sure the iterators never pass the end of the message, ...
+        (passing end of message can happen if:
+            - too many args in type tags
+                a. typetags overflow message size
+                b. args fulfilling typetags overflow message size
+            - strings too long or not terminated correctly
+            - blobs too long or not terminated correctly
+
+        if the message was fully checked during construction, the end() iterator
+        could be moved back until only arguments which fit withing size() may
+        be interated (this could be none). A flag could be set to indicate that
+        something was wrong.
+
+    - other packet badness could include:
+        - time tags too far into the future (the scheduler should deal with
+            that i guess).
+        - message address patterns which aren't correctly terminated
+
+    - improve the ability to parse messages without tags (SC uses methods which
+            get the data and advance the iterator in one step.)
+        - Check* could be modified to do this - ie if typetags are not present
+            it could check that reading the field won't escape the message size
+            and return the data, or return false if some consistency
+            constraint is violated.
+        (or alternately drop support for messages without type tags)
+        
+
+    - add a method to discard an inprogress message if it gets half
+        constructed and the buffer is full in OutboundPacket
+
+    - write a stress testing app which can send garbage packets to try to flush out other bugs in the parsing code.
+
+
+