diff --git a/client.go b/client.go index 4c42526..84d5cdd 100644 --- a/client.go +++ b/client.go @@ -17,7 +17,7 @@ import ( ) // A client connection -type ClientConnection struct { +type Client struct { // Connection-related tcpaddr *net.TCPAddr udpaddr *net.UDPAddr @@ -43,14 +43,14 @@ type ClientConnection struct { } // Something invalid happened on the wire. -func (client *ClientConnection) Panic(reason string) { +func (client *Client) Panic(reason string) { client.disconnected = true // fixme(mkrautz): we should inform the server "handler" method through a channel of this event, // so it can perform a proper disconnect. } // Read a protobuf message from a client -func (client *ClientConnection) readProtoMessage() (msg *Message, err os.Error) { +func (client *Client) readProtoMessage() (msg *Message, err os.Error) { var length uint32 var kind uint16 @@ -85,7 +85,7 @@ func (client *ClientConnection) readProtoMessage() (msg *Message, err os.Error) } // Send a protobuf-encoded message -func (c *ClientConnection) sendProtoMessage(kind uint16, msg interface{}) (err os.Error) { +func (c *Client) sendProtoMessage(kind uint16, msg interface{}) (err os.Error) { d, err := proto.Marshal(msg) if err != nil { return @@ -100,7 +100,7 @@ func (c *ClientConnection) sendProtoMessage(kind uint16, msg interface{}) (err o } // UDP receiver. -func (client *ClientConnection) udpreceiver() { +func (client *Client) udpreceiver() { for { buf := <-client.udprecv kind := (buf[0] >> 5) & 0x07; @@ -146,7 +146,7 @@ func (client *ClientConnection) udpreceiver() { } } -func (client *ClientConnection) sendUdp(msg *Message) { +func (client *Client) sendUdp(msg *Message) { if client.udp { log.Printf("Sent UDP!") client.server.udpsend <- msg @@ -161,7 +161,7 @@ func (client *ClientConnection) sendUdp(msg *Message) { // // Sender Goroutine // -func (client *ClientConnection) sender() { +func (client *Client) sender() { for { msg := <-client.msgchan @@ -196,7 +196,7 @@ func (client *ClientConnection) sender() { } // Receiver Goroutine -func (client *ClientConnection) receiver() { +func (client *Client) receiver() { for { // The version handshake is done. Forward this message to the synchronous request handler. @@ -249,7 +249,7 @@ func (client *ClientConnection) receiver() { } // Send the channel list to a client. -func (client *ClientConnection) sendChannelList() { +func (client *Client) sendChannelList() { server := client.server root := server.root @@ -266,7 +266,7 @@ func (client *ClientConnection) sendChannelList() { } // Send the userlist to a client. -func (client *ClientConnection) sendUserList() { +func (client *Client) sendUserList() { server := client.server server.cmutex.RLock() diff --git a/message.go b/message.go index 29f9915..636b65c 100644 --- a/message.go +++ b/message.go @@ -61,11 +61,11 @@ type Message struct { // If there is no connection established, address must be used. // If the datagram comes from an already-connected client, the // client field should point to that client. - client *ClientConnection + client *Client address net.Addr } -func (server *Server) handleCryptSetup(client *ClientConnection, msg *Message) { +func (server *Server) handleCryptSetup(client *Client, msg *Message) { cs := &mumbleproto.CryptSetup{} err := proto.Unmarshal(msg.buf, cs) if err != nil { @@ -96,7 +96,7 @@ func (server *Server) handleCryptSetup(client *ClientConnection, msg *Message) { } } -func (server *Server) handlePingMessage(client *ClientConnection, msg *Message) { +func (server *Server) handlePingMessage(client *Client, msg *Message) { ping := &mumbleproto.Ping{} err := proto.Unmarshal(msg.buf, ping) if err != nil { @@ -115,25 +115,25 @@ func (server *Server) handlePingMessage(client *ClientConnection, msg *Message) }) } -func (server *Server) handleChannelAddMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleChannelAddMessage(client *Client, msg *Message) { } -func (server *Server) handleChannelRemoveMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleChannelRemoveMessage(client *Client, msg *Message) { } -func (server *Server) handleChannelStateMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleChannelStateMessage(client *Client, msg *Message) { } -func (server *Server) handleUserRemoveMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleUserRemoveMessage(client *Client, msg *Message) { } -func (server *Server) handleUserStateMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleUserStateMessage(client *Client, msg *Message) { } -func (server *Server) handleBanListMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleBanListMessage(client *Client, msg *Message) { } -func (server *Server) handleTextMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleTextMessage(client *Client, msg *Message) { txtmsg := &mumbleproto.TextMessage{} err := proto.Unmarshal(msg.buf, txtmsg) if err != nil { @@ -141,9 +141,9 @@ func (server *Server) handleTextMessage(client *ClientConnection, msg *Message) return } - users := []*ClientConnection{}; + users := []*Client{}; for i := 0; i < len(txtmsg.Session); i++ { - user := server.getClientConnection(txtmsg.Session[i]) + user := server.getClient(txtmsg.Session[i]) users = append(users, user) } @@ -155,16 +155,16 @@ func (server *Server) handleTextMessage(client *ClientConnection, msg *Message) } } -func (server *Server) handleAclMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleAclMessage(client *Client, msg *Message) { } // User query -func (server *Server) handleQueryUsers(client *ClientConnection, msg *Message) { +func (server *Server) handleQueryUsers(client *Client, msg *Message) { } // User stats message. Shown in the Mumble client when a // user right clicks a user and selects 'User Information'. -func (server *Server) handleUserStatsMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleUserStatsMessage(client *Client, msg *Message) { stats := &mumbleproto.UserStats{} err := proto.Unmarshal(msg.buf, stats) if err != nil { diff --git a/server.go b/server.go index 068e43f..bf55935 100644 --- a/server.go +++ b/server.go @@ -54,7 +54,7 @@ type Server struct { // A list of all connected clients cmutex *sync.RWMutex - clients []*ClientConnection + clients []*Client // Codec information AlphaCodec int32 @@ -106,7 +106,7 @@ func NewServer(addr string, port int) (s *Server, err os.Error) { // Called by the server to initiate a new client connection. func (server *Server) NewClient(conn net.Conn) (err os.Error) { - client := new(ClientConnection) + client := new(Client) // Get the address of the connected client if addr := conn.RemoteAddr(); addr != nil { @@ -140,7 +140,7 @@ func (server *Server) NewClient(conn net.Conn) (err os.Error) { } // Lookup a client by it's session id. Optimize this by using a map. -func (server *Server) getClientConnection(session uint32) (client *ClientConnection) { +func (server *Server) getClient(session uint32) (client *Client) { server.cmutex.RLock() defer server.cmutex.RUnlock() @@ -167,7 +167,7 @@ func (server *Server) handler() { } } -func (server *Server) handleAuthenticate(client *ClientConnection, msg *Message) { +func (server *Server) handleAuthenticate(client *Client, msg *Message) { // Is this message not an authenticate message? If not, discard it... if msg.kind != MessageAuthenticate { client.Panic("Unexpected message. Expected Authenticate.") @@ -313,7 +313,7 @@ func (server *Server) updateCodecVersions() { return } -func (server *Server) sendUserList(client *ClientConnection) { +func (server *Server) sendUserList(client *Client) { server.cmutex.RLock() defer server.cmutex.RUnlock() @@ -355,7 +355,7 @@ func (server *Server) broadcastProtoMessage(kind uint16, msg interface{}) (err o return } -func (server *Server) handleIncomingMessage(client *ClientConnection, msg *Message) { +func (server *Server) handleIncomingMessage(client *Client, msg *Message) { log.Printf("Handle Incoming Message") switch msg.kind { case MessagePing: @@ -474,7 +474,7 @@ func (server *Server) ListenUDP() { address: udpaddr, } } else { - var match *ClientConnection + var match *Client plain := make([]byte, nread-4) decrypted := false @@ -502,7 +502,7 @@ func (server *Server) ListenUDP() { decrypted = true // If we were able to successfully decrpyt, add - // the UDPAddr to the ClientConnection struct. + // the UDPAddr to the Client struct. log.Printf("Client UDP connection established.") client.udpaddr = remote.(*net.UDPAddr) match = client