mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-01-07 16:33:09 +00:00
43 lines
876 B
Go
43 lines
876 B
Go
|
|
package utils
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"os"
|
||
|
|
"runtime"
|
||
|
|
|
||
|
|
"github.com/libp2p/go-libp2p/core/peer"
|
||
|
|
"github.com/multiformats/go-multiaddr"
|
||
|
|
)
|
||
|
|
|
||
|
|
func GetRSSKB() (uint64, error) {
|
||
|
|
var m runtime.MemStats
|
||
|
|
runtime.ReadMemStats(&m)
|
||
|
|
|
||
|
|
if runtime.GOOS == "linux" {
|
||
|
|
data, err := os.ReadFile("/proc/self/status")
|
||
|
|
if err != nil {
|
||
|
|
return 0, err
|
||
|
|
}
|
||
|
|
|
||
|
|
var rss uint64
|
||
|
|
for _, line := range []byte(string(data)) {
|
||
|
|
if line == 0 {
|
||
|
|
break
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if _, err := fmt.Sscanf(string(data), "VmRSS: %d kB", &rss); err == nil {
|
||
|
|
return rss, nil
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return m.Sys / 1024, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func EncapsulatePeerID(p peer.ID, addrs ...multiaddr.Multiaddr) []multiaddr.Multiaddr {
|
||
|
|
encapsulated := make([]multiaddr.Multiaddr, 0, len(addrs))
|
||
|
|
for _, addr := range addrs {
|
||
|
|
encapsulated = append(encapsulated, addr.Encapsulate(multiaddr.StringCast("/p2p/" + p.String())))
|
||
|
|
}
|
||
|
|
return encapsulated
|
||
|
|
}
|