func (client *Client) Processor(sink chan<- ClientEvent) {
var buf_net []byte
buf := make([]byte, 0)
- log.Println("New client", client)
+ log.Println(client, "New client")
sink <- ClientEvent{client, EVENT_NEW, ""}
for {
buf_net = make([]byte, BUF_SIZE)
)
type Daemon struct {
+ Verbose bool
hostname string
motd string
clients map[*Client]bool
// to corresponding daemon's places and start room's processor goroutine.
func (daemon *Daemon) RoomRegister(name string) (*Room, chan<- ClientEvent) {
room_new := NewRoom(daemon.hostname, name, daemon.log_sink, daemon.state_sink)
+ room_new.Verbose = daemon.Verbose
room_sink := make(chan ClientEvent)
daemon.rooms[name] = room_new
daemon.room_sinks[room_new] = room_sink
case EVENT_MSG:
cols := strings.SplitN(event.text, " ", 2)
command := strings.ToUpper(cols[0])
- log.Println(client, "command", command)
+ if daemon.Verbose {
+ log.Println(client, "command", command)
+ }
if command == "QUIT" {
delete(daemon.clients, client)
client.conn.Close()
ssl = flag.Bool("ssl", false, "Use SSL only.")
sslKey = flag.String("ssl_key", "", "SSL keyfile.")
sslCert = flag.String("ssl_cert", "", "SSL certificate.")
+
+ verbose = flag.Bool("v", false, "Enable verbose logging.")
)
func Run() {
state_sink := make(chan StateEvent)
daemon := NewDaemon(*hostname, *motd, log_sink, state_sink)
+ daemon.Verbose = *verbose
if *statedir == "" {
// Dummy statekeeper
go func() {
}
type Room struct {
+ Verbose bool
name string
topic string
key string
switch event.event_type {
case EVENT_NEW:
room.members[client] = true
- log.Println(client, "joined", room.name)
+ if room.Verbose {
+ log.Println(client, "joined", room.name)
+ }
room.SendTopic(client)
room.Broadcast(fmt.Sprintf(":%s JOIN %s", client, room.name))
room.log_sink <- LogEvent{room.name, client.nickname, "joined", true}