package ethwire import ( "fmt" "runtime" ) // should be used in Peer handleHandshake, incorporate Caps, ProtocolVersion, Pubkey etc. type ClientIdentity interface { String() string } type SimpleClientIdentity struct { clientString string clientIdentifier string version string customIdentifier string os string implementation string } func NewSimpleClientIdentity(clientIdentifier string, version string, customIdentifier string) *SimpleClientIdentity { clientIdentity := &SimpleClientIdentity{ clientIdentifier: clientIdentifier, version: version, customIdentifier: customIdentifier, os: runtime.GOOS, implementation: "Go", } clientIdentity.init() return clientIdentity } func (c *SimpleClientIdentity) init() { c.clientString = fmt.Sprintf("%s/v%s/%s/%s/%s", c.clientIdentifier, c.version, c.customIdentifier, c.os, c.implementation) } func (c *SimpleClientIdentity) String() string { return c.clientString } func (c *SimpleClientIdentity) SetCustomIdentifier(customIdentifier string) { c.customIdentifier = customIdentifier c.init() } func (c *SimpleClientIdentity) GetCustomIdentifier() string { return c.customIdentifier }