Sys::Virt::Stream - Represent & manage a libvirt stream


Sys-Virt documentation Contained in the Sys-Virt distribution.

Index


Code Index:

NAME

Top

Sys::Virt::Stream - Represent & manage a libvirt stream

DESCRIPTION

Top

The Sys::Virt::Stream module represents a stream managed by the virtual machine monitor.

METHODS

Top

my $st Sys::Virt::Stream->new($conn, $flags);

Creates a new data stream, ready for use with a stream based API. The optional $flags parameter can be used to configure the stream as non-blocking

$st->abort()

Abort I/O on the stream. Either this function or finish must be called on any stream which has been activated

$st->finish()

Complete I/O on the stream. Either this function or abort must be called on any stream which has been activated

$rv = $st->recv($data, $nbytes)

Receive upto $nbytes worth of data, copying into $data. Returns the number of bytes read, or -2 if I/O would block, or -1 on error.

$rv = $st->send($data, $nbytes)

Send upto $nbytes worth of data, copying from $data. Returns the number of bytes sent, or -2 if I/O would block, or -1 on error.

$st->recv_all($handler)

Receive all data available from the stream, invoking $handler to process the data. The $handler parameter must be a function which expects three arguments, the $st stream object, a scalar containing the data received and a data byte count. The function should return the number of bytes processed, or -1 upon error.

$st->send_all($handler)

Send all data produced by $handler to the stream. The $handler parameter must be a function which expects three arguments, the $st stream object, a scalar which must be filled with data and a maximum data byte count desired. The function should return the number of bytes filled, 0 on end of file, or -1 upon error

$st->add_callback($events, $coderef)

Register a callback to be invoked whenever the stream has one or more events from $events mask set. The $coderef must be a subroutine that expects 2 parameters, the original $st object and the new $events mask

$st->update_callback($events)

Change the event mask for a previously registered callback to $events

$st->remove_callback();

Remove a previously registered callback

CONSTANTS

Top

Sys::Virt::Stream::NONBLOCK

Create a stream which will not block when performing I/O

Sys::Virt::Stream::EVENT_READABLE

The stream has data available for read without blocking

Sys::Virt::Stream::EVENT_WRITABLE

The stream has ability to write data without blocking

Sys::Virt::Stream::EVENT_ERROR

An error occurred on the stream

Sys::Virt::Stream::EVENT_HANGUP

The remote end of the stream closed

AUTHORS

Top

Daniel P. Berrange <berrange@redhat.com>

COPYRIGHT

Top

LICENSE

Top

This program is free software; you can redistribute it and/or modify it under the terms of either the GNU General Public License as published by the Free Software Foundation (either version 2 of the License, or at your option any later version), or, the Artistic License, as specified in the Perl README file.

SEE ALSO

Top

Sys::Virt, Sys::Virt::Error, http://libvirt.org


Sys-Virt documentation Contained in the Sys-Virt distribution.
# -*- perl -*-
#
# Copyright (C) 2011 Red Hat
#
# This program is free software; You can redistribute it and/or modify
# it under either:
#
# a) the GNU General Public License as published by the Free
#   Software Foundation; either version 2, or (at your option) any
#   later version,
#
# or
#
# b) the "Artistic License"
#
# The file "LICENSE" distributed along with this file provides full
# details of the terms and conditions of the two licenses.

package Sys::Virt::Stream;

use strict;
use warnings;


sub _new {
    my $proto = shift;
    my $class = ref($proto) || $proto;
    my %params = @_;

    my $con = exists $params{connection} ? $params{connection} : die "connection parameter is requried";
    my $self = Sys::Virt::Stream::_new_obj($con, $params{flags});

    bless $self, $class;

    return $self;
}



1;