2019-10-06 17:37:56 +00:00
|
|
|
package xmpp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/tls"
|
2019-10-11 05:15:47 +00:00
|
|
|
"errors"
|
2019-10-06 17:37:56 +00:00
|
|
|
)
|
|
|
|
|
2019-10-11 05:15:47 +00:00
|
|
|
var TLSNotSupported = errors.New("Transport does not support StartTLS")
|
|
|
|
|
2019-10-11 04:24:27 +00:00
|
|
|
type TransportConfiguration struct {
|
2019-10-11 04:41:15 +00:00
|
|
|
// Address is the XMPP Host and port to connect to. Host is of
|
|
|
|
// the form 'serverhost:port' i.e "localhost:8888"
|
|
|
|
Address string
|
2019-10-11 04:24:27 +00:00
|
|
|
ConnectTimeout int // Client timeout in seconds. Default to 15
|
|
|
|
// tls.Config must not be modified after having been passed to NewClient. Any
|
|
|
|
// changes made after connecting are ignored.
|
|
|
|
TLSConfig *tls.Config
|
|
|
|
}
|
|
|
|
|
2019-10-06 17:37:56 +00:00
|
|
|
type Transport interface {
|
2019-10-11 04:41:15 +00:00
|
|
|
Connect() error
|
2019-10-06 17:37:56 +00:00
|
|
|
DoesStartTLS() bool
|
2019-10-11 04:24:27 +00:00
|
|
|
StartTLS(domain string) error
|
2019-10-06 17:37:56 +00:00
|
|
|
|
2019-10-11 05:15:47 +00:00
|
|
|
IsSecure() bool
|
|
|
|
|
2019-10-06 17:37:56 +00:00
|
|
|
Read(p []byte) (n int, err error)
|
|
|
|
Write(p []byte) (n int, err error)
|
|
|
|
Close() error
|
|
|
|
}
|
2019-10-11 04:41:15 +00:00
|
|
|
|
|
|
|
func NewTransport(config TransportConfiguration) Transport {
|
|
|
|
return &XMPPTransport{Config: config}
|
|
|
|
|
|
|
|
}
|