Files
p2p-rendering-computation/p2p/iptable.go
2021-04-11 01:26:55 +04:00

91 lines
1.9 KiB
Go

package p2p
import (
"encoding/json"
"fmt"
"git.sr.ht/~akilan1999/p2p-rendering-computation/config"
"io/ioutil"
"os"
"time"
)
// Get IP table Data
type IpAddresses struct {
IpAddress []IpAddress `json:"ip_address"`
}
type IpAddress struct {
Ipv4 string `json:"ipv4"`
Latency time.Duration `json:"latency"`
Download float64 `json:"download"`
Upload float64 `json:"upload"`
}
// Read data from Ip tables from json file
func ReadIpTable()(*IpAddresses ,error){
// Get Path from config
config, err := config.ConfigInit()
if err != nil {
return nil,err
}
jsonFile, err := os.Open(config.SpeedTestFile)
// if we os.Open returns an error then handle it
if err != nil {
return nil,err
}
// defer the closing of our jsonFile so that we can parse it later on
defer jsonFile.Close()
// read our opened xmlFile as a byte array.
byteValue, _ := ioutil.ReadAll(jsonFile)
// we initialize our Users array
var ipAddresses IpAddresses
// we unmarshal our byteArray which contains our
// jsonFile's content into 'users' which we defined above
json.Unmarshal(byteValue, &ipAddresses)
return &ipAddresses, nil
}
// Write to IP table json file
func (i *IpAddresses) WriteIpTable() error {
file, err := json.MarshalIndent(i, "", " ")
if err != nil {
return err
}
// Get Path from config
config, err := config.ConfigInit()
if err != nil {
return err
}
err = ioutil.WriteFile(config.SpeedTestFile, file, 0644)
if err != nil {
return err
}
return nil
}
// Print Ip table data for Cli
func PrintIpTable() error {
table, err := ReadIpTable()
if err != nil {
return err
}
for i := 0; i < len(table.IpAddress); i++ {
fmt.Printf("----------------------\nIP Address: %s\nLatency: %s\nDownload: %f\nUplaod: %f\n-----------" +
"-----------\n",table.IpAddress[i].Ipv4,
table.IpAddress[i].Latency,table.IpAddress[i].Download,table.IpAddress[i].Upload)
}
return nil
}