예제 #1
0
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;
}
예제 #2
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);
}