NAME
Data::Stream - capability based stream model
CAPABILITIES
Common: (Next Reset Peek First Exhausted)
Next:
$stream
->
next
Reset:
$stream
->
reset
Peek: (Next)
$stream
->peek
# defaulted
First: (Reset, Next)
$stream
->first
# defaulted
Exhausted:
$stream
->exhausted
Exhausted::Peek: (Exhausted)
$sream
->exhausted
# defaulted
Ready: (Next)
$stream
->ready
$stream
->next_if_ready
# defaulted
MultiNext: (Next)
$stream
->
next
(Int
$how_many
);
# defaulted
DISCUSSION AREAS
Can we consider certain things universal? Should peek always be permitted even though it can potentially retain a reference to a large/contended resource?
What are sensible capabilities for e.g. a socket stream?
Seeking, skipping ...
Composition of potentially inefficient defaults?
MultiNext may interfere with simple wrappers for next - can we deal with that somehow? (multi+around?)