changed sendJson param and removed not needed file mode

removed instantaneous speed; update only if percentage delta > 0.1

removed instantaneous speed; update only if percentage delta > 0.1
This commit is contained in:
Dario Piombo 2020-05-12 15:09:14 +02:00
parent 2509420ba5
commit 1532b2a8c8
2 changed files with 19 additions and 26 deletions

View File

@ -61,7 +61,7 @@ func (c *Client) Download(pack *DCCSend) {
PercCompletion: 0,
File: pack.File,
}
file, err := os.OpenFile(filepath.Join(c.DownloadFolder, pack.File), os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
file, err := os.OpenFile(filepath.Join(c.DownloadFolder, pack.File), os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
c.Progress <- DownloadProgress{
PercCompletion: -1,
@ -85,8 +85,8 @@ func (c *Client) Download(pack *DCCSend) {
defer con.Close()
var avgSpeed float64
var prevTime int64 = -1
var speed float64
var prevPerc float64
secondsElapsed := int64(0)
totalBytes := uint64(0)
buf := make([]byte, 0, 4*1024)
@ -118,31 +118,25 @@ func (c *Client) Download(pack *DCCSend) {
now := time.Now().UnixNano()
secondsElapsed = (now - start) / 1e9
avgSpeed = round2(float64(totalBytes) / (float64(secondsElapsed)))
speed := 0.0
if prevTime < 0 {
speed = avgSpeed
} else {
speed = round2(1e9 * float64(cycleBytes) / (float64(now - prevTime)))
}
secondsToGo := (float64(pack.Length) - float64(totalBytes)) / speed
prevTime = now
speed = round2(float64(totalBytes) / (float64(secondsElapsed)))
secondsToGo := round2((float64(pack.Length) - float64(totalBytes)) / speed)
con.Write(byteRead(totalBytes))
c.Progress <- DownloadProgress{
InstSpeed: humanReadableByteCount(speed, true),
AvgSpeed: humanReadableByteCount(avgSpeed, true),
PercCompletion: percentage,
BytesRemaining: humanReadableByteCount(float64(pack.Length-totalBytes), false),
BytesCompleted: humanReadableByteCount(float64(totalBytes), false),
SecondsElapsed: secondsElapsed,
SecondsToGo: secondsToGo,
File: pack.File,
if percentage-prevPerc >= 0.1 {
prevPerc = percentage
c.Progress <- DownloadProgress{
Speed: humanReadableByteCount(speed, true),
PercCompletion: percentage,
BytesRemaining: humanReadableByteCount(float64(pack.Length-totalBytes), false),
BytesCompleted: humanReadableByteCount(float64(totalBytes), false),
SecondsElapsed: secondsElapsed,
SecondsToGo: secondsToGo,
File: pack.File,
}
}
}
con.Write(byteRead(totalBytes))
c.Progress <- DownloadProgress{
AvgSpeed: humanReadableByteCount(avgSpeed, true),
Speed: humanReadableByteCount(speed, true),
PercCompletion: 100,
BytesCompleted: humanReadableByteCount(float64(totalBytes), false),
SecondsElapsed: secondsElapsed,
@ -156,8 +150,7 @@ type DownloadProgress struct {
BytesCompleted string `json:"bytes_completed"`
BytesRemaining string `json:"bytes_remaining"`
PercCompletion float64 `json:"perc_completion"`
AvgSpeed string `json:"avg_speed"`
InstSpeed string `json:"speed"`
Speed string `json:"speed"`
SecondsElapsed int64 `json:"elapsed"`
SecondsToGo float64 `json:"eta"`
}

View File

@ -64,7 +64,7 @@ func (i *ircHandler) run() {
i.log("Connected")
}
case progress := <-i.client.Progress:
i.state.sendJSON("progress", progress.ToJSON())
i.state.sendJSON("pm", Message{Server: i.client.Host, From: "@dcc", Content: progress.ToJSON()})
}
}
}