Exemple #1
0
func SendLocalToRemote(stream libvirt.VirStream, volume libvirt.VirStorageVol, data []byte) error {

	err := libvirt.StorageVolUpload(volume, stream, 0, uint64(len(data)))
	if err != nil {
		return err
	}
	//transfter volume
	remain := len(data)
	sent := 0
	offset := 0
	DATALEN := 16384
	for remain > 0 {
		if remain > DATALEN {
			sent = stream.Send(data[offset:], DATALEN)
		} else {
			sent = stream.Send(data[offset:], remain)
		}

		if sent < 0 {
			stream.Abort()
			return errors.New("Stream Send return 0")
		}
		if sent == 0 {
			break
		}
		remain -= sent
		offset += sent

	}
	err = stream.Finish()
	if err != nil {
		return err
	}
	return nil

}