2025-12-22 14:15:00 +05:30

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
}