syncthing/lib/model/connection.go

53 lines
1.0 KiB
Go
Raw Normal View History

2015-06-28 15:05:29 +00:00
// Copyright (C) 2015 The Syncthing Authors.
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at http://mozilla.org/MPL/2.0/.
package model
import (
"crypto/tls"
2015-06-28 15:05:29 +00:00
"net"
"github.com/syncthing/protocol"
)
type IntermediateConnection struct {
Conn *tls.Conn
ConnType ConnectionType
}
2015-06-28 15:05:29 +00:00
type Connection struct {
net.Conn
protocol.Connection
Type ConnectionType
}
const (
ConnectionTypeBasicAccept ConnectionType = iota
ConnectionTypeBasicDial
2015-06-28 19:09:53 +00:00
ConnectionTypeRelayAccept
ConnectionTypeRelayDial
2015-06-28 15:05:29 +00:00
)
type ConnectionType int
func (t ConnectionType) String() string {
switch t {
case ConnectionTypeBasicAccept:
return "basic-accept"
case ConnectionTypeBasicDial:
return "basic-dial"
2015-06-28 19:09:53 +00:00
case ConnectionTypeRelayAccept:
return "relay-accept"
case ConnectionTypeRelayDial:
return "relay-dial"
2015-06-28 15:05:29 +00:00
}
return "unknown"
}
2015-06-28 19:09:53 +00:00
func (t ConnectionType) IsDirect() bool {
return t == ConnectionTypeBasicAccept || t == ConnectionTypeBasicDial
}