From db919722cbb2f3b242e6325f1aaa35f310796aa0 Mon Sep 17 00:00:00 2001 From: Daniel Oaks Date: Thu, 19 Jan 2017 16:12:10 +1000 Subject: [PATCH] cull some old, unnecessary files --- irc/clientsocket.go | 126 -------------------------------------------- irc/messages.go | 45 ---------------- 2 files changed, 171 deletions(-) delete mode 100644 irc/clientsocket.go delete mode 100644 irc/messages.go diff --git a/irc/clientsocket.go b/irc/clientsocket.go deleted file mode 100644 index 531e8c52..00000000 --- a/irc/clientsocket.go +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2016- Daniel Oaks -// released under the MIT license - -package irc - -import ( - "fmt" - "net" - "strings" - - "github.com/DanielOaks/girc-go/ircmsg" -) - -// ClientSocket listens to a socket using the IRC protocol, processes events, -// and also sends IRC lines out of that socket. -type ClientSocket struct { - receiveLines chan string - ReceiveEvents chan Message - SendLines chan string - socket Socket - client Client -} - -// NewClientSocket returns a new ClientSocket. -func NewClientSocket(conn net.Conn, client Client) ClientSocket { - return ClientSocket{ - receiveLines: make(chan string), - ReceiveEvents: make(chan Message), - SendLines: make(chan string), - socket: NewSocket(conn), - client: client, - } -} - -// Start creates and starts running the necessary event loops. -func (cs *ClientSocket) Start() { - go cs.RunEvents() - go cs.RunSocketSender() - go cs.RunSocketListener() -} - -// RunEvents handles received IRC lines and processes incoming commands. -func (cs *ClientSocket) RunEvents() { - var exiting bool - var line string - for !exiting { - select { - case line = <-cs.receiveLines: - if line != "" { - fmt.Println("<- ", strings.TrimRight(line, "\r\n")) - exiting = cs.processIncomingLine(line) - } - } - } - // empty the receiveLines queue - cs.socket.Close() - select { - case <-cs.receiveLines: - // empty - default: - // empty - } -} - -// RunSocketSender sends lines to the IRC socket. -func (cs *ClientSocket) RunSocketSender() { - var err error - var line string - for { - line = <-cs.SendLines - err = cs.socket.Write(line) - fmt.Println(" ->", strings.TrimRight(line, "\r\n")) - if err != nil { - break - } - } -} - -// RunSocketListener receives lines from the IRC socket. -func (cs *ClientSocket) RunSocketListener() { - var errConn error - var line string - - for { - line, errConn = cs.socket.Read() - cs.receiveLines <- line - if errConn != nil { - break - } - } - if !cs.socket.Closed { - cs.Send(nil, "", "ERROR", "Closing connection") - cs.socket.Close() - } -} - -// Send sends an IRC line to the listener. -func (cs *ClientSocket) Send(tags *map[string]ircmsg.TagValue, prefix string, command string, params ...string) error { - ircmsg := ircmsg.MakeMessage(tags, prefix, command, params...) - line, err := ircmsg.Line() - if err != nil { - return err - } - cs.SendLines <- line - return nil -} - -// processIncomingLine splits and handles the given command line. -// Returns true if client is exiting (sent a QUIT command, etc). -func (cs *ClientSocket) processIncomingLine(line string) bool { - msg, err := ircmsg.ParseLine(line) - if err != nil { - cs.Send(nil, "", "ERROR", "Your client sent a malformed line") - return true - } - - command, canBeParsed := Commands[msg.Command] - - if canBeParsed { - return command.Run(cs.client.server, &cs.client, msg) - } - //TODO(dan): This is an error+disconnect purely for reasons of testing. - // Later it may be downgraded to not-that-bad. - cs.Send(nil, "", "ERROR", fmt.Sprintf("Your client sent a command that could not be parsed [%s]", msg.Command)) - return true -} diff --git a/irc/messages.go b/irc/messages.go deleted file mode 100644 index 1cac46fb..00000000 --- a/irc/messages.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2016- Daniel Oaks -// released under the MIT license - -package irc - -// Message represents an internal message passed by oragono. -type Message struct { - Type MessageType - Verb MessageVerb - Info map[MessageInfoKey]interface{} -} - -// NewMessage returns a new Message. -// This is purely a convenience function. -func NewMessage(mt MessageType, mv MessageVerb) Message { - var message Message - message.Type = mt - message.Verb = mv - message.Info = make(map[MessageInfoKey]interface{}) - return message -} - -// MessageType represents the type of message it is. -type MessageType int - -const ( - // LineMT represents an IRC line Message Type - LineMT MessageType = iota -) - -// MessageVerb represents the verb (i.e. the specific command, etc) of a message. -type MessageVerb int - -const ( - // NoMV represents no Message Verb - NoMV MessageVerb = iota -) - -// MessageInfoKey represents a key in the Info attribute of a Message. -type MessageInfoKey int - -const ( - // LineIK represents an IRC line message info key - LineIK MessageInfoKey = iota -)