From 3e1f487e027f2801f9a828ddf1a1fb7527a870f5 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Mon, 26 Nov 2018 22:14:59 +0100 Subject: [PATCH] client: Added Ready() method. --- client.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/client.go b/client.go index 6e5e8a7..12aa4bc 100644 --- a/client.go +++ b/client.go @@ -76,6 +76,7 @@ type Client struct { user string host string quit bool + ready bool isupport isupport.ISupport values map[string]interface{} @@ -161,6 +162,14 @@ func (client *Client) CapEnabled(cap string) bool { return client.capEnabled[cap] } +// Ready returns true if the client is marked as ready, which means that it has received the MOTD. +func (client *Client) Ready() bool { + client.mutex.RLock() + defer client.mutex.RUnlock() + + return client.ready +} + // Connect connects to the server by addr. func (client *Client) Connect(addr string, ssl bool) (err error) { var conn net.Conn @@ -214,6 +223,7 @@ func (client *Client) Connect(addr string, ssl bool) (err error) { client.mutex.Lock() client.conn = nil + client.ready = false client.mutex.Unlock() client.Emit(NewEvent("client", "disconnect")) @@ -1151,6 +1161,10 @@ func (client *Client) handleEvent(event *Event) { client.EmitNonBlocking(rejoinEvent) } + client.mutex.Lock() + client.ready = true + client.mutex.Unlock() + client.EmitNonBlocking(NewEvent("hook", "ready")) } }