Files
go-i2p/lib/common/router_address.go
2016-02-04 00:54:51 -08:00

42 lines
1.1 KiB
Go

package common
type RouterAddress []byte
func (router_address RouterAddress) Cost() int {
return Integer([]byte{router_address[0]})
}
func (router_address RouterAddress) Expiration() (d Date) {
copy(router_address[1:8], d[:])
return
}
func (router_address RouterAddress) TransportStyle() string {
return string(
router_address[10:router_address.stringLength()],
)
}
func (router_address RouterAddress) Options() Mapping {
var mapping Mapping
copy(router_address[9+router_address.stringLength():], mapping[:])
return mapping
}
func (router_address RouterAddress) stringLength() int {
return Integer([]byte{router_address[9]})
}
func readRouterAddress(data []byte) (RouterAddress, []byte, error) {
var router_address RouterAddress
copy(data[:10], router_address)
string_len := router_address.stringLength()
router_address = append(router_address, data[10:10+string_len]...)
options_len := Integer(data[string_len+10 : string_len+11])
router_address = append(router_address, data[string_len+10:11+string_len+options_len]...)
return router_address, data[:], nil
}