Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

#include <xs/export.h>
#include <xs/unievent/Streamer.h>
#include <xs/CallbackDispatcher.h>
using namespace xs;
using namespace panda::unievent;
using namespace panda::unievent::streamer;
using panda::string;
using panda::string_view;
struct PerlStreamerInput : Streamer::IInput, Backref {
using Super = Streamer::IInput;
ErrorCode start (const LoopSP& loop) override {
Object o = xs::out(this);
return xs::in<ErrorCode>(o.call("start", xs::out(loop)));
}
void stop () override {
Object o = xs::out(this);
o.call("stop");
}
ErrorCode start_reading () override {
Object o = xs::out(this);
return xs::in<ErrorCode>(o.call("start_reading"));
}
void stop_reading () override {
Object o = xs::out(this);
o.call("stop_reading");
}
void handle_read (const string& data, const ErrorCode& err) { Super::handle_read(data, err); }
void handle_eof () { Super::handle_eof(); }
~PerlStreamerInput () { Backref::dtor(); }
};
struct PerlStreamerOutput : Streamer::IOutput, Backref {
using Super = Streamer::IOutput;
ErrorCode start (const LoopSP& loop) override {
Object o = xs::out(this);
return xs::in<ErrorCode>(o.call("start", xs::out(loop)));
}
void stop () override {
Object o = xs::out(this);
o.call("stop");
}
ErrorCode write (const string& data) override {
Object o = xs::out(this);
return xs::in<ErrorCode>(o.call("write", xs::out(data)));
}
size_t write_queue_size () const override {
Object o = xs::out(this);
return xs::in<size_t>(o.call("write_queue_size"));
}
void handle_write (const ErrorCode& err) { Super::handle_write(err); }
~PerlStreamerOutput () { Backref::dtor(); }
};
namespace xs {
template <class TYPE> struct Typemap<PerlStreamerInput*, TYPE> : Typemap<panda::unievent::Streamer::IInput*, TYPE> {
static panda::string package () { return "UniEvent::Streamer::Input"; }
};
template <class TYPE> struct Typemap<PerlStreamerOutput*, TYPE> : Typemap<panda::unievent::Streamer::IOutput*, TYPE> {
static panda::string package () { return "UniEvent::Streamer::Output"; }
};
}
MODULE = UniEvent::Streamer PACKAGE = UniEvent::Streamer
PROTOTYPES: DISABLE
BOOT {
}
Streamer* Streamer::new (const Streamer::IInputSP& input, const Streamer::IOutputSP& output, size_t max_buf = 10000000, LoopSP loop = {}) {
if (!loop) loop = Loop::default_loop();
RETVAL = new Streamer(input, output, max_buf, loop);
}
void Streamer::start ()
void Streamer::stop ()
XSCallbackDispatcher* Streamer::finish_event () {
RETVAL = XSCallbackDispatcher::create(THIS->finish_event);
}
void Streamer::finish_callback (Streamer::finish_fn cb) {
THIS->finish_event.remove_all();
if (cb) THIS->finish_event.add(cb);
}
MODULE = UniEvent::Streamer PACKAGE = UniEvent::Streamer::Input
PROTOTYPES: DISABLE
BOOT {
Stash(__PACKAGE__).inherit("UniEvent::Streamer::IInput");
}
PerlStreamerInput* PerlStreamerInput::new () {
PROTO = Stash::from_name(CLASS).bless(Hash::create());
RETVAL = new PerlStreamerInput();
}
void PerlStreamerInput::handle_read (string data, ErrorCode err = ErrorCode())
void PerlStreamerInput::handle_eof ()
MODULE = UniEvent::Streamer PACKAGE = UniEvent::Streamer::Output
PROTOTYPES: DISABLE
BOOT {
Stash(__PACKAGE__).inherit("UniEvent::Streamer::IOutput");
}
PerlStreamerOutput* PerlStreamerOutput::new () {
PROTO = Stash::from_name(CLASS).bless(Hash::create());
RETVAL = new PerlStreamerOutput();
}
void PerlStreamerOutput::handle_write (ErrorCode err = ErrorCode())
MODULE = UniEvent::Streamer PACKAGE = UniEvent::Streamer::FileInput
PROTOTYPES: DISABLE
BOOT {
Stash(__PACKAGE__).inherit("UniEvent::Streamer::IInput");
}
FileInput* FileInput::new (string_view path, size_t chunk_size = 1000000)
MODULE = UniEvent::Streamer PACKAGE = UniEvent::Streamer::FileOutput
PROTOTYPES: DISABLE
BOOT {
Stash(__PACKAGE__).inherit("UniEvent::Streamer::IOutput");
}
FileOutput* FileOutput::new (string_view path, int mode = Fs::DEFAULT_FILE_MODE)
MODULE = UniEvent::Streamer PACKAGE = UniEvent::Streamer::StreamInput
PROTOTYPES: DISABLE
BOOT {
Stash(__PACKAGE__).inherit("UniEvent::Streamer::IInput");
}
StreamInput* StreamInput::new (const StreamSP& s)
MODULE = UniEvent::Streamer PACKAGE = UniEvent::Streamer::StreamOutput
PROTOTYPES: DISABLE
BOOT {
Stash(__PACKAGE__).inherit("UniEvent::Streamer::IOutput");
}
StreamOutput* StreamOutput::new (const StreamSP& s)