Stem Development TODO List
Feel free to tackle any of these tasks. Email uri@stemsystems.com if you
want design/code ideas or to discuss any of these projects.
Last edited Fri Jan 16 17:07:14 EST 2004
Stem::Event::*
Add support for more event loops (Tk, Qt, tcl, WxWindows,
POE). See Stem::Event::EventPM for an example of how to wrap an
event loop in Stem.
Stem::Msg, Stem::Route
enable tracing of delivered messages
basic source routing needs design work. new client hubs will
flood upstream who they are. master servers can respond
downstream which will create a fully aware tree networks.
add support for a forward. it takes a message, clones it and
changes the to address.
maybe move Stem::Route to Stem::Msg::Route. it is only used by
Stem::Msg and that better describes its name.
Stem::Portal
finish and test Portal forking
maybe convert to use Class clone/piped support. not sure if this
is reasonable or worth it.
Stem::Log
add support for single method ref to do all the filtering. it is
passed the log entry and is a stem::log::entry object. it can
call all the action methods. there is no need for the current
design of a list of key/values. it will be deprecated.
timestamp is set with a template (strftime like but numbers only).
add timer based filters. single shot cron entries to toggle
state are fine. but how do you set the state at startup? if it
is between start and end times, the filter should be
enabled. this needs design work.
define and add more actions
email
msg
run_stem
write up run_stem man page in pod
write tech notes for run_stem
Stem::Proc
needs much more testing
test pseudo tty
Stem::File
(some of this is done. a good simple project to pick up)
design parent cell and how it spawns targeted file cells.
code file stem based transfer stuff.
add file compare options - size, timestamp, MD5
add single directory support.
filename filters
add dir tree copy support
add throttle support? don't want to slurp entire large file in
and clog the system. throttle with reply messages and/or timing
add support for ftp and scp
Stem::Util
replace read_file/write_file with File::Slurp. might as well eat
my own dog food. this needs to be added to the required modules
list in Build.PL
Stem::Expect
use proc or socket and use async IO
hook in Stem::Cell::Flow
expect handles timeouts from async IO. then it drives the state
machine with a timeout method. regular input is sent to the
state machine as data.
if no input matches but not timed out yet, we wait for more
input or the timeout.
do we need code callbacks? i think the higher level object
(protocol::ftp?) would want callbacks itself in some cases.
Testing
need tests for higher level cells.
need load testing of various subsystems.
need cross platform testing.
Documentation
full pods for all modules
accurate docs for all class fields. this can be autogenerated
from the $field_info lists. we could parse only that code out
easily and eval the string. the either edit the internal pod or
some other text file. it would generate a nicely formatted
description of all the class fields.
Tracing
mark by name which message is currently being delivered
use the hub/cell/target in the 'to' address.
any newly dispatched messages get a from/origin of that to
just copy the to?
fix registry lookup by object to get cell/name and target
save current event cell name and target
create trace file to be written by events and message delivery
(or dispatch?)