func (t *SimpleTunnel) AcquireReader() InstructionReader {
	t.readerLock.Lock()
	return t.stream
}
AcquireReader acquires the reader lock
package guac
import (
	"fmt"
	"github.com/google/uuid"
	"io"
)
const InternalDataOpcode = ""
var internalOpcodeIns = []byte(fmt.Sprint(len(InternalDataOpcode), ".", InternalDataOpcode))
type InstructionReader interface {
	ReadSome() ([]byte, error)
	Available() bool
	Flush()
}
type Tunnel interface {
	AcquireReader() InstructionReader
	ReleaseReader()
	HasQueuedReaderThreads() bool
	AcquireWriter() io.Writer
	ReleaseWriter()
	HasQueuedWriterThreads() bool
	GetUUID() string
	ConnectionID() string
	Close() error
}
type SimpleTunnel struct {
	stream *Stream
	uuid       uuid.UUID
	readerLock CountedLock
	writerLock CountedLock
}
func NewSimpleTunnel(stream *Stream) *SimpleTunnel {
	return &SimpleTunnel{
		stream: stream,
		uuid:   uuid.New(),
	}
}