add progressbar

This commit is contained in:
Zack Scholl 2019-11-13 09:18:19 -08:00
parent e2dde7d46f
commit cdc962b59a
3 changed files with 22 additions and 2 deletions

1
go.mod
View File

@ -10,6 +10,7 @@ require (
github.com/pkg/errors v0.8.1
github.com/schollz/logger v1.0.1
github.com/schollz/pake/v2 v2.0.3-0.20191113001949-efbd97a5fff1
github.com/schollz/progressbar/v2 v2.14.0
github.com/stretchr/testify v1.4.0
github.com/tscholl2/siec v0.0.0-20191103131401-2e0c53a9e212 // indirect
golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708

5
go.sum
View File

@ -31,6 +31,8 @@ github.com/marten-seemann/qtls v0.2.3 h1:0yWJ43C62LsZt08vuQJDK1uC1czUc3FJeCLPoNA
github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk=
github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc=
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
@ -84,6 +86,9 @@ github.com/schollz/pake/v2 v2.0.2 h1:p9y4Gocc5PWueyhhR7OH+Gwpu2xkP5BM9Pepl9krVfo
github.com/schollz/pake/v2 v2.0.2/go.mod h1:3uXB571UYJ8Eqh2EEohXe/aO32QID+Varb4GeYA//yw=
github.com/schollz/pake/v2 v2.0.3-0.20191113001949-efbd97a5fff1 h1:1WpHD2WEsvFNag5ufk1zWv+NkgYbU4QeMS5rFXJI5dk=
github.com/schollz/pake/v2 v2.0.3-0.20191113001949-efbd97a5fff1/go.mod h1:3uXB571UYJ8Eqh2EEohXe/aO32QID+Varb4GeYA//yw=
github.com/schollz/progressbar v1.0.0 h1:gbyFReLHDkZo8mxy/dLWMr+Mpb1MokGJ1FqCiqacjZM=
github.com/schollz/progressbar/v2 v2.14.0 h1:vo7bdkI9E4/CIk9DnL5uVIaybLQiVtiCC2vO+u9j5IM=
github.com/schollz/progressbar/v2 v2.14.0/go.mod h1:6YZjqdthH6SCZKv2rqGryrxPtfmRB/DWZxSMfCXPyD8=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=

View File

@ -16,6 +16,7 @@ import (
"github.com/schollz/croc/v7/src/models"
log "github.com/schollz/logger"
"github.com/schollz/pake/v2"
"github.com/schollz/progressbar/v2"
)
// Debug toggles debug mode
@ -385,7 +386,7 @@ func (c *Client) CreateOfferer(finished chan<- error) (pc *webrtc.PeerConnection
var readyToBegin = false
var readyToEnd = false
var bar *progressbar.ProgressBar
dc.OnOpen(func() {
log.Debug("data channel is open")
if c.Options.IsSender {
@ -402,6 +403,11 @@ func (c *Client) CreateOfferer(finished chan<- error) (pc *webrtc.PeerConnection
log.Debug("transfering file")
}
bar = progressbar.NewOptions64(fstat.Size(),
progressbar.OptionSetBytes64(fstat.Size()),
progressbar.OptionSetPredictTime(true),
progressbar.OptionThrottle(100*time.Millisecond),
)
timeStart := time.Now()
for {
for {
@ -412,6 +418,7 @@ func (c *Client) CreateOfferer(finished chan<- error) (pc *webrtc.PeerConnection
}
data := make([]byte, maxPacketSizeHalf)
n, errRead := f.Read(data)
bar.Add(n)
if errRead != nil {
if errRead == io.EOF {
break
@ -456,6 +463,7 @@ func (c *Client) CreateOfferer(finished chan<- error) (pc *webrtc.PeerConnection
})
var fileSize int64
// Register the OnMessage to handle incoming messages
dc.OnMessage(func(dcMsg webrtc.DataChannelMessage) {
var fd FileData
@ -488,6 +496,11 @@ func (c *Client) CreateOfferer(finished chan<- error) (pc *webrtc.PeerConnection
fileSize = 0
} else {
log.Debugf("receiving file sized %d", fileSize)
bar = progressbar.NewOptions64(fileSize,
progressbar.OptionSetBytes64(fileSize),
progressbar.OptionSetPredictTime(true),
progressbar.OptionThrottle(100*time.Millisecond),
)
return
}
@ -495,7 +508,8 @@ func (c *Client) CreateOfferer(finished chan<- error) (pc *webrtc.PeerConnection
err = box.Unbundle(string(dcMsg.Data), c.Key, &fd)
if err == nil {
// log.Debug(fd.Position)
fwrite.Write(fd.Data)
n, _ := fwrite.Write(fd.Data)
bar.Add(n)
sendData([]byte{2, 3, 4})
} else {
log.Error(err)