Ori Newman 42e50e6dc2
[NOD-1191] Convert wire protocol to proto (#831)
* [NOD-1191] Convert wire protocol to 100% protobuf

* [NOD-1191] Simplify wire interface and remove redundant messages

* [NOD-1191] Map all proto to wire conversions

* [NOD-1203] Create netadapter outside of protocol manager

* [NOD-1191] Fix nil errors

* [NOD-1191] Fix comments

* [NOD-1191] Add converter interface

* [NOD-1191] Add missing GetBlockLocator message

* [NOD-1191] Change message names that starts with 'get' to 'request'

* [NOD-1191] Change message commands values

* [NOD-1191] Remove redundant methods

* [NOD-1191] Rename message constructors

* [NOD-1191] Change message commands to use iota

* [NOD-1191] Add missing outputs to protobuf conversion

* [NOD-1191] Make block header a required field

* [NOD-1191] Rename variables

* [NOD-1212] Fix test names

* [NOD-1191] Rename flow names

* [NOD-1191] Fix infinite loop
2020-07-30 18:19:55 +03:00

52 lines
1.5 KiB
Go

package protowire
import (
"github.com/kaspanet/kaspad/wire"
"github.com/pkg/errors"
)
func (x *KaspadMessage_Addresses) toWireMessage() (wire.Message, error) {
protoAddresses := x.Addresses
if len(x.Addresses.AddressList) > wire.MaxAddressesPerMsg {
return nil, errors.Errorf("too many addresses for message "+
"[count %d, max %d]", len(x.Addresses.AddressList), wire.MaxAddressesPerMsg)
}
subnetworkID, err := protoAddresses.SubnetworkID.toWire()
if err != nil {
return nil, err
}
addressList := make([]*wire.NetAddress, len(protoAddresses.AddressList))
for i, address := range protoAddresses.AddressList {
addressList[i], err = address.toWire()
if err != nil {
return nil, err
}
}
return &wire.MsgAddresses{
IncludeAllSubnetworks: protoAddresses.IncludeAllSubnetworks,
SubnetworkID: subnetworkID,
AddrList: addressList,
}, nil
}
func (x *KaspadMessage_Addresses) fromWireMessage(msgAddresses *wire.MsgAddresses) error {
if len(msgAddresses.AddrList) > wire.MaxAddressesPerMsg {
return errors.Errorf("too many addresses for message "+
"[count %d, max %d]", len(msgAddresses.AddrList), wire.MaxAddressesPerMsg)
}
addressList := make([]*NetAddress, len(msgAddresses.AddrList))
for i, address := range msgAddresses.AddrList {
addressList[i] = wireNetAddressToProto(address)
}
x.Addresses = &AddressesMessage{
IncludeAllSubnetworks: msgAddresses.IncludeAllSubnetworks,
SubnetworkID: wireSubnetworkIDToProto(msgAddresses.SubnetworkID),
AddressList: addressList,
}
return nil
}