int main(int argc, char const ** argv) { VirtualStream<char, Input> vin; VirtualStream<char, Output> vout; if (argc != 3) { CharString inExts = concat(vin.getFileExtensions(), "|", true); CharString outExts = concat(vout.getFileExtensions(), "|", true); std::cerr << "USAGE: " << argv[0] << " input[" << inExts << "] output[" << outExts << "]\n"; return 1; } if (!open(vin, argv[1])) { std::cerr << "ERROR: Could not open file " << argv[1] << "\n"; return 1; } if (!open(vout, argv[2])) { std::cerr << "ERROR: Could not open file " << argv[2] << "\n"; return 1; } copyStream(vout, vin); return 0; }
static void notify_space_available(void * args) { VirtualStream * stream = (VirtualStream *)args; assert(stream->magic == STREAM_MAGIC); stream->space_available_posted = 0; if (stream->deleted || stream->eos_inp || stream->callback == NULL) return; stream->callback(stream, VS_EVENT_SPACE_AVAILABLE, stream->callback_args); }
static void notify_data_available(void * args) { VirtualStream * stream = (VirtualStream *)args; assert(stream->magic == STREAM_MAGIC); if (stream->deleted) return; stream->callback(stream, VS_EVENT_DATA_AVAILABLE, stream->callback_args); }