2019-12-27 17:23:08 +00:00
|
|
|
/*
|
2022-06-09 14:18:24 +00:00
|
|
|
* Copyright (c) 2021 IBM Corp and others.
|
2019-12-27 17:23:08 +00:00
|
|
|
*
|
|
|
|
* All rights reserved. This program and the accompanying materials
|
2022-06-09 14:18:24 +00:00
|
|
|
* are made available under the terms of the Eclipse Public License v2.0
|
|
|
|
* and Eclipse Distribution License v1.0 which accompany this distribution.
|
|
|
|
*
|
|
|
|
* The Eclipse Public License is available at
|
|
|
|
* https://www.eclipse.org/legal/epl-2.0/
|
|
|
|
* and the Eclipse Distribution License is available at
|
|
|
|
* http://www.eclipse.org/org/documents/edl-v10.php.
|
2019-12-27 17:23:08 +00:00
|
|
|
*
|
|
|
|
* Contributors:
|
|
|
|
* Seth Hoenig
|
|
|
|
* Allan Stockdill-Mander
|
|
|
|
* Mike Robertson
|
|
|
|
*/
|
|
|
|
|
|
|
|
package mqtt
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/tls"
|
|
|
|
"net/http"
|
|
|
|
"net/url"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
// ClientOptionsReader provides an interface for reading ClientOptions after the client has been initialized.
|
|
|
|
type ClientOptionsReader struct {
|
|
|
|
options *ClientOptions
|
|
|
|
}
|
|
|
|
|
2021-09-01 19:34:31 +00:00
|
|
|
// Servers returns a slice of the servers defined in the clientoptions
|
2019-12-27 17:23:08 +00:00
|
|
|
func (r *ClientOptionsReader) Servers() []*url.URL {
|
|
|
|
s := make([]*url.URL, len(r.options.Servers))
|
|
|
|
|
|
|
|
for i, u := range r.options.Servers {
|
|
|
|
nu := *u
|
|
|
|
s[i] = &nu
|
|
|
|
}
|
|
|
|
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2021-09-01 19:34:31 +00:00
|
|
|
// ResumeSubs returns true if resuming stored (un)sub is enabled
|
2019-12-27 17:23:08 +00:00
|
|
|
func (r *ClientOptionsReader) ResumeSubs() bool {
|
|
|
|
s := r.options.ResumeSubs
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2021-09-01 19:34:31 +00:00
|
|
|
// ClientID returns the set client id
|
2019-12-27 17:23:08 +00:00
|
|
|
func (r *ClientOptionsReader) ClientID() string {
|
|
|
|
s := r.options.ClientID
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2021-09-01 19:34:31 +00:00
|
|
|
// Username returns the set username
|
2019-12-27 17:23:08 +00:00
|
|
|
func (r *ClientOptionsReader) Username() string {
|
|
|
|
s := r.options.Username
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2021-09-01 19:34:31 +00:00
|
|
|
// Password returns the set password
|
2019-12-27 17:23:08 +00:00
|
|
|
func (r *ClientOptionsReader) Password() string {
|
|
|
|
s := r.options.Password
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2021-09-01 19:34:31 +00:00
|
|
|
// CleanSession returns whether Cleansession is set
|
2019-12-27 17:23:08 +00:00
|
|
|
func (r *ClientOptionsReader) CleanSession() bool {
|
|
|
|
s := r.options.CleanSession
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) Order() bool {
|
|
|
|
s := r.options.Order
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) WillEnabled() bool {
|
|
|
|
s := r.options.WillEnabled
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) WillTopic() string {
|
|
|
|
s := r.options.WillTopic
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) WillPayload() []byte {
|
|
|
|
s := r.options.WillPayload
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) WillQos() byte {
|
|
|
|
s := r.options.WillQos
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) WillRetained() bool {
|
|
|
|
s := r.options.WillRetained
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) ProtocolVersion() uint {
|
|
|
|
s := r.options.ProtocolVersion
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) TLSConfig() *tls.Config {
|
|
|
|
s := r.options.TLSConfig
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) KeepAlive() time.Duration {
|
|
|
|
s := time.Duration(r.options.KeepAlive * int64(time.Second))
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) PingTimeout() time.Duration {
|
|
|
|
s := r.options.PingTimeout
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) ConnectTimeout() time.Duration {
|
|
|
|
s := r.options.ConnectTimeout
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) MaxReconnectInterval() time.Duration {
|
|
|
|
s := r.options.MaxReconnectInterval
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) AutoReconnect() bool {
|
|
|
|
s := r.options.AutoReconnect
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2021-09-01 19:34:31 +00:00
|
|
|
// ConnectRetryInterval returns the delay between retries on the initial connection (if ConnectRetry true)
|
|
|
|
func (r *ClientOptionsReader) ConnectRetryInterval() time.Duration {
|
|
|
|
s := r.options.ConnectRetryInterval
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
// ConnectRetry returns whether the initial connection request will be retried until connection established
|
|
|
|
func (r *ClientOptionsReader) ConnectRetry() bool {
|
|
|
|
s := r.options.ConnectRetry
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2019-12-27 17:23:08 +00:00
|
|
|
func (r *ClientOptionsReader) WriteTimeout() time.Duration {
|
|
|
|
s := r.options.WriteTimeout
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) MessageChannelDepth() uint {
|
|
|
|
s := r.options.MessageChannelDepth
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ClientOptionsReader) HTTPHeaders() http.Header {
|
|
|
|
h := r.options.HTTPHeaders
|
|
|
|
return h
|
|
|
|
}
|
2021-09-01 19:34:31 +00:00
|
|
|
|
|
|
|
// WebsocketOptions returns the currently configured WebSocket options
|
|
|
|
func (r *ClientOptionsReader) WebsocketOptions() *WebsocketOptions {
|
|
|
|
s := r.options.WebsocketOptions
|
|
|
|
return s
|
|
|
|
}
|