syncthing/protocol/packets.go

62 lines
1.3 KiB
Go
Raw Normal View History

2015-06-24 04:39:46 -07:00
// Copyright (C) 2015 Audrius Butkevicius and Contributors (see the CONTRIBUTORS file).
//go:generate -command genxdr go run ../../syncthing/Godeps/_workspace/src/github.com/calmh/xdr/cmd/genxdr/main.go
//go:generate genxdr -o packets_xdr.go packets.go
package protocol
2015-07-17 12:17:49 -07:00
import (
"fmt"
syncthingprotocol "github.com/syncthing/protocol"
"net"
)
2015-06-24 04:39:46 -07:00
const (
2015-06-27 17:52:01 -07:00
messageTypePing int32 = iota
messageTypePong
messageTypeJoinRelayRequest
messageTypeJoinSessionRequest
messageTypeResponse
messageTypeConnectRequest
messageTypeSessionInvitation
2015-06-24 04:39:46 -07:00
)
2015-06-27 17:52:01 -07:00
type header struct {
magic uint32
messageType int32
messageLength int32
2015-06-24 04:39:46 -07:00
}
type Ping struct{}
type Pong struct{}
2015-06-27 17:52:01 -07:00
type JoinRelayRequest struct{}
type JoinSessionRequest struct {
Key []byte // max:32
}
type Response struct {
Code int32
Message string
}
2015-06-24 04:39:46 -07:00
type ConnectRequest struct {
ID []byte // max:32
}
type SessionInvitation struct {
2015-06-27 17:52:01 -07:00
From []byte // max:32
2015-06-24 04:39:46 -07:00
Key []byte // max:32
Address []byte // max:32
Port uint16
ServerSocket bool
}
2015-07-17 12:17:49 -07:00
func (i *SessionInvitation) String() string {
return fmt.Sprintf("%s@%s", syncthingprotocol.DeviceIDFromBytes(i.From), i.AddressString())
}
func (i *SessionInvitation) AddressString() string {
return fmt.Sprintf("%s:%d", net.IP(i.Address), i.Port)
}