#####################################################################
#
# This file is distributed under the terms in the attached LICENSE file.
# If you do not find this file, copies can be found by writing to:
# Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300,
# Berkeley, CA, 94704.  Attention:  Intel License Inquiry.
# Or
# UC Berkeley EECS Computer Science Division, 387 Soda Hall #1776, 
# Berkeley, CA,  94707. Attention: P2 Group.
# 
# DESCRIPTION: TODO file for P2 development.  If you start working on
# something, put your name after it.
# 
#   $Id: TODO.txt,v 1.1.1.1 2007/07/22 14:29:18 atuls Exp $
#




 - A TCP connect element pair: analogous to UDP element.  Some kind of
   reconnection policy.   Rx is push output, Tx is pull input. 

 - Element to demultiplex packets based on peer IP address.  push-in,
   push-out. 

 - Add a persistent table object, using BerkeleyDB or Rusty's
   transactional store.

 - Adding microbenchmarks to the framework above.

 - Cron job to checkout a fresh tree on grumpy each night, build P2,
   run all the regression tests, archive the benchmark timings, and
   send any errors to p2devel. 

 - Message-level simulation

 - Autoconf should check for correct version of flex 

 - Autoconf should check for correct version of bison

 - Dynamic or static schema checker. Do all instances of foo(X, Y, Z) in
   your OverLog use the same arity, types?

 - Create an AND barrier.  It has a variable number of push inputs and a
   push output.  It remembers inputs it receives until it is
   reset. Waits until all received inputs have received a tuple with
   "true".  When all have received true inputs, it pushes out a signal
   tuple on its output port and resets all input ports to false.

 - Add a "getting started with P2" document (Joe)

 - Rewrite OverLog parser, fix off-by-one errors in error reporting,
   engineer a consistent error handling policy.

 - Write an OverLog manual. (Joe)

 - Use shared pointers (or a materialized version thereof) to implement
   the count algorithm for multiply-derived tuples.

 - Create a uniform logging infrastructure that can be used outside of
   the dataflow, especially for logging within tables and other non-data
   flow components.

 - Create a replay facility for element, rule strand, and dataflow
   traces. Great for replay debugging.

 - Fix docs/ping.olg
