Fixes against weekly.2012-02-22
Convert time/duration variables Clean up duration math
This commit is contained in:
parent
4e661a3954
commit
a0256382be
12
irc.go
12
irc.go
@ -26,7 +26,7 @@ func reader(irc *IRCConnection) {
|
|||||||
irc.Error <- err
|
irc.Error <- err
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
irc.lastMessage = time.Seconds()
|
irc.lastMessage = time.Now()
|
||||||
msg = msg[0 : len(msg)-2] //Remove \r\n
|
msg = msg[0 : len(msg)-2] //Remove \r\n
|
||||||
event := &IRCEvent{Raw: msg}
|
event := &IRCEvent{Raw: msg}
|
||||||
if msg[0] == ':' {
|
if msg[0] == ':' {
|
||||||
@ -75,18 +75,18 @@ func writer(irc *IRCConnection) {
|
|||||||
|
|
||||||
//Pings the server if we have not recived any messages for 5 minutes
|
//Pings the server if we have not recived any messages for 5 minutes
|
||||||
func pinger(i *IRCConnection) {
|
func pinger(i *IRCConnection) {
|
||||||
i.ticker = time.Tick(1000 * 1000 * 1000 * 60 * 1) //Tick every minute.
|
i.ticker = time.Tick(1 * time.Minute) //Tick every minute.
|
||||||
i.ticker2 = time.Tick(1000 * 1000 * 1000 * 60 * 15) //Tick every 15 minutes.
|
i.ticker2 = time.Tick(15 * time.Minute) //Tick every 15 minutes.
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-i.ticker:
|
case <-i.ticker:
|
||||||
//Ping if we haven't recived anything from the server within 4 minutes
|
//Ping if we haven't recived anything from the server within 4 minutes
|
||||||
if time.Seconds()-i.lastMessage >= 60*4 {
|
if time.Since(i.lastMessage) >= (4 * time.Minute) {
|
||||||
i.SendRaw(fmt.Sprintf("PING %d", time.Nanoseconds()))
|
i.SendRaw(fmt.Sprintf("PING %d", time.Now().UnixNano()))
|
||||||
}
|
}
|
||||||
case <-i.ticker2:
|
case <-i.ticker2:
|
||||||
//Ping every 15 minutes.
|
//Ping every 15 minutes.
|
||||||
i.SendRaw(fmt.Sprintf("PING %d", time.Nanoseconds()))
|
i.SendRaw(fmt.Sprintf("PING %d", time.Now().UnixNano()))
|
||||||
//Try to recapture nickname if it's not as configured.
|
//Try to recapture nickname if it's not as configured.
|
||||||
if i.nick != i.nickcurrent {
|
if i.nick != i.nickcurrent {
|
||||||
i.nickcurrent = i.nick
|
i.nickcurrent = i.nick
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package irc
|
package irc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (irc *IRCConnection) AddCallback(eventcode string, callback func(*IRCEvent)) {
|
func (irc *IRCConnection) AddCallback(eventcode string, callback func(*IRCEvent)) {
|
||||||
@ -80,7 +80,7 @@ func (irc *IRCConnection) setupCallbacks() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
irc.AddCallback("CTCP_TIME", func(e *IRCEvent) {
|
irc.AddCallback("CTCP_TIME", func(e *IRCEvent) {
|
||||||
ltime := time.LocalTime()
|
ltime := time.Now()
|
||||||
irc.SendRaw(fmt.Sprintf("NOTICE %s :\x01TIME %s\x01", e.Nick, ltime.String()))
|
irc.SendRaw(fmt.Sprintf("NOTICE %s :\x01TIME %s\x01", e.Nick, ltime.String()))
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -101,8 +101,9 @@ func (irc *IRCConnection) setupCallbacks() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
irc.AddCallback("PONG", func(e *IRCEvent) {
|
irc.AddCallback("PONG", func(e *IRCEvent) {
|
||||||
ns, _ := strconv.Atoi64(e.Message)
|
ns, _ := strconv.ParseInt(e.Message, 10, 64)
|
||||||
fmt.Printf("Lag: %fs\n", float32((time.Nanoseconds()-ns))/1000/1000/1000)
|
delta := time.Duration(time.Now().UnixNano() - ns)
|
||||||
|
fmt.Printf("Lag: %vs\n", delta)
|
||||||
})
|
})
|
||||||
|
|
||||||
irc.AddCallback("NICK", func(e *IRCEvent) {
|
irc.AddCallback("NICK", func(e *IRCEvent) {
|
||||||
|
@ -4,7 +4,10 @@
|
|||||||
|
|
||||||
package irc
|
package irc
|
||||||
|
|
||||||
import "net"
|
import (
|
||||||
|
"net"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
type IRCConnection struct {
|
type IRCConnection struct {
|
||||||
socket net.Conn
|
socket net.Conn
|
||||||
@ -19,9 +22,9 @@ type IRCConnection struct {
|
|||||||
Password string
|
Password string
|
||||||
events map[string][]func(*IRCEvent)
|
events map[string][]func(*IRCEvent)
|
||||||
|
|
||||||
lastMessage int64
|
lastMessage time.Time
|
||||||
ticker <-chan int64
|
ticker <-chan time.Time
|
||||||
ticker2 <-chan int64
|
ticker2 <-chan time.Time
|
||||||
|
|
||||||
VerboseCallbackHandler bool
|
VerboseCallbackHandler bool
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user