forked from gdm85/go-libdeluge
-
Notifications
You must be signed in to change notification settings - Fork 0
/
session_status.go
53 lines (46 loc) · 1.23 KB
/
session_status.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package delugeclient
import (
"github.com/gdm85/go-rencode"
)
// SessionStatus contains basic session status and statistics.
type SessionStatus struct {
HasIncomingConnections bool
UploadRate float32
DownloadRate float32
PayloadUploadRate float32
PayloadDownloadRate float32
TotalDownload int32
TotalUpload int32
NumPeers int16
DhtNodes int16
}
// sessionStatusKeys is a slice with specific session status and statistics.
var sessionStatusKeys = rencode.NewList(
"has_incoming_connections",
"upload_rate",
"download_rate",
"payload_upload_rate",
"payload_download_rate",
"total_download",
"total_upload",
"num_peers",
"dht_nodes",
)
// GetSessionStatus retrieves session status and statistics.
func (c *Client) GetSessionStatus() (*SessionStatus, error) {
var args rencode.List
args.Add(sessionStatusKeys)
rd, err := c.rpcWithDictionaryResult("core.get_session_status", args, rencode.Dictionary{})
if err != nil {
return nil, err
}
if c.settings.Logger != nil {
c.settings.Logger.Printf("session status: %+s", rd)
}
var data SessionStatus
err = rd.ToStruct(&data, c.excludeV2tag)
if err != nil {
return nil, err
}
return &data, nil
}