64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package p2p
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"runtime"
 | |
| )
 | |
| 
 | |
| // should be used in Peer handleHandshake, incorporate Caps, ProtocolVersion, Pubkey etc.
 | |
| type ClientIdentity interface {
 | |
| 	String() string
 | |
| 	Pubkey() []byte
 | |
| }
 | |
| 
 | |
| type SimpleClientIdentity struct {
 | |
| 	clientIdentifier string
 | |
| 	version          string
 | |
| 	customIdentifier string
 | |
| 	os               string
 | |
| 	implementation   string
 | |
| 	pubkey           string
 | |
| }
 | |
| 
 | |
| func NewSimpleClientIdentity(clientIdentifier string, version string, customIdentifier string, pubkey string) *SimpleClientIdentity {
 | |
| 	clientIdentity := &SimpleClientIdentity{
 | |
| 		clientIdentifier: clientIdentifier,
 | |
| 		version:          version,
 | |
| 		customIdentifier: customIdentifier,
 | |
| 		os:               runtime.GOOS,
 | |
| 		implementation:   runtime.Version(),
 | |
| 		pubkey:           pubkey,
 | |
| 	}
 | |
| 
 | |
| 	return clientIdentity
 | |
| }
 | |
| 
 | |
| func (c *SimpleClientIdentity) init() {
 | |
| }
 | |
| 
 | |
| func (c *SimpleClientIdentity) String() string {
 | |
| 	var id string
 | |
| 	if len(c.customIdentifier) > 0 {
 | |
| 		id = "/" + c.customIdentifier
 | |
| 	}
 | |
| 
 | |
| 	return fmt.Sprintf("%s/v%s%s/%s/%s",
 | |
| 		c.clientIdentifier,
 | |
| 		c.version,
 | |
| 		id,
 | |
| 		c.os,
 | |
| 		c.implementation)
 | |
| }
 | |
| 
 | |
| func (c *SimpleClientIdentity) Pubkey() []byte {
 | |
| 	return []byte(c.pubkey)
 | |
| }
 | |
| 
 | |
| func (c *SimpleClientIdentity) SetCustomIdentifier(customIdentifier string) {
 | |
| 	c.customIdentifier = customIdentifier
 | |
| }
 | |
| 
 | |
| func (c *SimpleClientIdentity) GetCustomIdentifier() string {
 | |
| 	return c.customIdentifier
 | |
| }
 |