Write stream implementation (#19)

Defines a WriteStream structure for buffering writes, similar to the existing ReadStream. WriteStreams can be created on OutEndpoints by using ep.NewStream().
This commit is contained in:
zagrodzki
2017-09-08 13:41:25 +02:00
committed by GitHub
parent 01840c1d23
commit 5c10dc8f4e
7 changed files with 368 additions and 84 deletions

View File

@@ -192,8 +192,16 @@ func (f *fakeLibusb) setIsoPacketLengths(*libusbTransfer, uint32) {}
// waitForSubmitted can be used by tests to define custom behavior of the transfers submitted on the USB bus.
// TODO(sebek): add fields in fakeTransfer to differentiate between different devices/endpoints used concurrently.
func (f *fakeLibusb) waitForSubmitted() *fakeTransfer {
return <-f.submitted
func (f *fakeLibusb) waitForSubmitted(done <-chan struct{}) *fakeTransfer {
select {
case t, ok := <-f.submitted:
if !ok {
return nil
}
return t
case <-done:
return nil
}
}
// empty can be used to confirm that all transfers were cleaned up.