Skip to content

Commit

Permalink
add tracing for text messages
Browse files Browse the repository at this point in the history
  • Loading branch information
ftl committed Dec 18, 2021
1 parent 7853305 commit d5b1ca9
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ type Client struct {
commands chan command
txAudio chan []byte
timeout time.Duration
trace bool
}

const (
Expand All @@ -75,12 +76,13 @@ type clientConn interface {
ReadMessage() (messageType int, p []byte, err error)
}

func newClient(host *net.TCPAddr, listeners []interface{}) *Client {
func newClient(host *net.TCPAddr, trace bool, listeners []interface{}) *Client {
result := &Client{
host: host,
closed: make(chan struct{}),
ready: make(chan struct{}),
timeout: DefaultTimeout,
trace: trace,
}
result.notifier = newNotifier(listeners, result.closed)
result.Notify(result)
Expand All @@ -89,8 +91,8 @@ func newClient(host *net.TCPAddr, listeners []interface{}) *Client {

// Open a connection to the given host. The given listeners are notified about any incoming message.
// Open returns as soon as the READY; message was received.
func Open(host *net.TCPAddr, listeners ...interface{}) (*Client, error) {
client := newClient(host, listeners)
func Open(host *net.TCPAddr, trace bool, listeners ...interface{}) (*Client, error) {
client := newClient(host, trace, listeners)
err := client.connect()
if err != nil {
return nil, err
Expand All @@ -104,8 +106,8 @@ func Open(host *net.TCPAddr, listeners ...interface{}) (*Client, error) {
// listeners are notified about any incoming message.
// KeepOpen returns immediately. If you want to know when the connection is available, add a ConnectionListener to the
// list of listeners.
func KeepOpen(host *net.TCPAddr, retryInterval time.Duration, listeners ...interface{}) *Client {
client := newClient(host, listeners)
func KeepOpen(host *net.TCPAddr, retryInterval time.Duration, trace bool, listeners ...interface{}) *Client {
client := newClient(host, trace, listeners)
go func() {
disconnected := make(chan bool, 1)
for {
Expand Down Expand Up @@ -203,6 +205,9 @@ func (c *Client) readLoop(conn clientConn, incoming chan<- Message) {
}
switch msgType {
case websocket.TextMessage:
if c.trace {
log.Printf("< %s", msg)
}
message, err := ParseTextMessage(string(msg))
if err != nil {
log.Printf("cannot parse incoming message: %v", err)
Expand All @@ -211,6 +216,9 @@ func (c *Client) readLoop(conn clientConn, incoming chan<- Message) {
c.notifier.textMessage(message)
incoming <- message
case websocket.BinaryMessage:
// if c.trace {
// log.Printf("< [BINARY DATA]")
// }
message, err := ParseBinaryMessage(msg)
if err != nil {
log.Printf("cannot parse incoming message: %v", err)
Expand All @@ -236,6 +244,9 @@ func (c *Client) writeLoop(conn clientConn, incoming <-chan Message) {
if currentCommand == nil {
select {
case msg := <-c.txAudio:
// if c.trace {
// log.Printf("> [TX AUDIO]")
// }
err := conn.WriteMessage(websocket.BinaryMessage, msg)
if err != nil {
log.Printf("error writing tx audio: %v", err)
Expand All @@ -247,6 +258,9 @@ func (c *Client) writeLoop(conn clientConn, incoming <-chan Message) {
currentCommand = &cmd
currentDeadline = now.Add(c.timeout)
}
if c.trace {
log.Printf("> %s", cmd)
}
err := conn.WriteMessage(websocket.TextMessage, []byte(cmd.String()))
if err != nil {
log.Printf("error writing command %q: %v", cmd, err)
Expand Down

0 comments on commit d5b1ca9

Please sign in to comment.