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

67 lines
1.8 KiB
Go

package protowire
import (
"github.com/kaspanet/kaspad/netadapter/id"
"github.com/kaspanet/kaspad/util/mstime"
"github.com/kaspanet/kaspad/wire"
)
func (x *KaspadMessage_Version) toWireMessage() (wire.Message, error) {
address, err := x.Version.Address.toWire()
if err != nil {
return nil, err
}
selectedTipHash, err := x.Version.SelectedTipHash.toWire()
if err != nil {
return nil, err
}
subnetworkID, err := x.Version.SubnetworkID.toWire()
if err != nil {
return nil, err
}
err = wire.ValidateUserAgent(x.Version.UserAgent)
if err != nil {
return nil, err
}
return &wire.MsgVersion{
ProtocolVersion: x.Version.ProtocolVersion,
Services: wire.ServiceFlag(x.Version.Services),
Timestamp: mstime.UnixMilliseconds(x.Version.Timestamp),
Address: address,
ID: id.FromBytes(x.Version.Id),
UserAgent: x.Version.UserAgent,
SelectedTipHash: selectedTipHash,
DisableRelayTx: x.Version.DisableRelayTx,
SubnetworkID: subnetworkID,
}, nil
}
func (x *KaspadMessage_Version) fromWireMessage(msgVersion *wire.MsgVersion) error {
err := wire.ValidateUserAgent(msgVersion.UserAgent)
if err != nil {
return err
}
versionID, err := msgVersion.ID.SerializeToBytes()
if err != nil {
return err
}
x.Version = &VersionMessage{
ProtocolVersion: msgVersion.ProtocolVersion,
Services: uint64(msgVersion.Services),
Timestamp: msgVersion.Timestamp.UnixMilliseconds(),
Address: wireNetAddressToProto(msgVersion.Address),
Id: versionID,
UserAgent: msgVersion.UserAgent,
SelectedTipHash: wireHashToProto(msgVersion.SelectedTipHash),
DisableRelayTx: msgVersion.DisableRelayTx,
SubnetworkID: wireSubnetworkIDToProto(msgVersion.SubnetworkID),
}
return nil
}