Skip to content

Commit 649d7be

Browse files
committed
Stream method
1 parent 67e9726 commit 649d7be

File tree

3 files changed

+29
-21
lines changed

3 files changed

+29
-21
lines changed

common.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"fmt"
55
"io"
66
"log"
7+
"os"
8+
"sync"
79

810
"tinygo.org/x/bluetooth"
911
)
@@ -58,3 +60,28 @@ func splitWrite(w io.Writer, p []byte) (int, error) {
5860
var (
5961
errConnClosed = fmt.Errorf(`tcp-over-bt: connection closed`)
6062
)
63+
64+
func Stream(a, b io.ReadWriter) {
65+
wg := sync.WaitGroup{}
66+
wg.Add(2)
67+
68+
go func() {
69+
defer wg.Done()
70+
io.Copy(a, b)
71+
}()
72+
73+
go func() {
74+
defer wg.Done()
75+
io.Copy(b, a)
76+
}()
77+
78+
wg.Wait()
79+
}
80+
81+
var Stdio io.ReadWriter = struct {
82+
io.Reader
83+
io.Writer
84+
}{
85+
os.Stdin,
86+
os.Stdout,
87+
}

device.go

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ package main
44

55
import (
66
"bytes"
7-
"io"
87
"log"
98
"net"
109
"sync"
@@ -168,19 +167,6 @@ func main() {
168167
conn.Close()
169168
}()
170169

171-
wg := sync.WaitGroup{}
172-
wg.Add(2)
173-
174-
go func() {
175-
defer wg.Done()
176-
io.Copy(conn, d)
177-
}()
178-
179-
go func() {
180-
defer wg.Done()
181-
io.Copy(d, conn)
182-
}()
183-
184-
wg.Wait()
170+
Stream(conn, d)
185171
}
186172
}

host.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package main
55
import (
66
"bytes"
77
"fmt"
8-
"io"
98
"log"
109
"os"
1110
"sync"
@@ -125,9 +124,5 @@ func main() {
125124
h.Connect(address)
126125
fmt.Fprintln(os.Stderr, `Connected`)
127126

128-
go func() {
129-
Must1(io.Copy(os.Stdout, h))
130-
}()
131-
132-
Must1(io.Copy(h, os.Stdin))
127+
Stream(h, Stdio)
133128
}

0 commit comments

Comments
 (0)