-func NewClient(hostname string, conn net.Conn) *Client {
- return &Client{hostname: hostname, conn: conn, nickname: "*"}
+func (c Client) String() string {
+ return *c.nickname + "!" + *c.username + "@" + c.Host()
+}
+
+func NewClient(conn net.Conn) *Client {
+ nickname := "*"
+ username := ""
+ c := Client{
+ conn: conn,
+ nickname: &nickname,
+ username: &username,
+ recvTimestamp: time.Now(),
+ sendTimestamp: time.Now(),
+ alive: true,
+ outBuf: make(chan string, MaxOutBuf),
+ }
+ go c.MsgSender()
+ return &c
+}
+
+func (c *Client) SetDead() {
+ close(c.outBuf)
+ c.alive = false
+}
+
+func (c *Client) Close() {
+ c.Lock()
+ c.conn.Close()
+ if c.alive {
+ c.SetDead()
+ }
+ c.Unlock()