Merge pull request #50 from arachnist/rework-initialization
Rework initialization of some plugins. Fixes #42master
commit
29cdd169f6
|
@ -12,5 +12,7 @@
|
|||
"DictionaryObjects":".dicts/objects",
|
||||
"DictionaryVerbs":".dicts/verbs",
|
||||
"DictionaryAdjectives":".dicts/adjectives",
|
||||
"KTHost":"127.0.0.1",
|
||||
"KTPort":1337,
|
||||
"Nick":"gorepost"
|
||||
}
|
||||
|
|
17
bot/bot.go
17
bot/bot.go
|
@ -6,13 +6,20 @@ import (
|
|||
)
|
||||
|
||||
var cfg *dyncfg.Dyncfg
|
||||
var cfgLock sync.Mutex
|
||||
var initLock sync.Mutex
|
||||
var initList []func()
|
||||
|
||||
func addInit(f func()) {
|
||||
initLock.Lock()
|
||||
defer initLock.Unlock()
|
||||
|
||||
initList = append(initList, f)
|
||||
}
|
||||
|
||||
func Initialize(config *dyncfg.Dyncfg) {
|
||||
cfg = config
|
||||
cfgLock.Unlock()
|
||||
}
|
||||
|
||||
func init() {
|
||||
cfgLock.Lock()
|
||||
for _, f := range initList {
|
||||
f()
|
||||
}
|
||||
}
|
||||
|
|
11
bot/jan.go
11
bot/jan.go
|
@ -8,7 +8,6 @@ import (
|
|||
"log"
|
||||
"math/rand"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/arachnist/gorepost/irc"
|
||||
|
@ -16,7 +15,6 @@ import (
|
|||
|
||||
var objects []string
|
||||
var predicates []string
|
||||
var janLock sync.RWMutex
|
||||
|
||||
func jan(output func(irc.Message), msg irc.Message) {
|
||||
args := strings.Split(msg.Trailing, " ")
|
||||
|
@ -24,9 +22,6 @@ func jan(output func(irc.Message), msg irc.Message) {
|
|||
return
|
||||
}
|
||||
|
||||
janLock.RLock()
|
||||
defer janLock.RUnlock()
|
||||
|
||||
var predicate string
|
||||
var object string
|
||||
|
||||
|
@ -49,9 +44,6 @@ func jan(output func(irc.Message), msg irc.Message) {
|
|||
}
|
||||
|
||||
func lazyJanInit() {
|
||||
defer janLock.Unlock()
|
||||
cfgLock.Lock()
|
||||
defer cfgLock.Unlock()
|
||||
var err error
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
objects, err = readLines(cfg.LookupString(nil, "DictionaryObjects"))
|
||||
|
@ -68,7 +60,6 @@ func lazyJanInit() {
|
|||
}
|
||||
|
||||
func init() {
|
||||
janLock.Lock()
|
||||
log.Println("Defering \"jan\" initialization")
|
||||
go lazyJanInit()
|
||||
addInit(lazyJanInit)
|
||||
}
|
||||
|
|
|
@ -8,14 +8,12 @@ import (
|
|||
"log"
|
||||
"math/rand"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/arachnist/gorepost/irc"
|
||||
)
|
||||
|
||||
var adjectives []string
|
||||
var papiezLock sync.RWMutex
|
||||
|
||||
func papiez(output func(irc.Message), msg irc.Message) {
|
||||
args := strings.Split(msg.Trailing, " ")
|
||||
|
@ -23,18 +21,12 @@ func papiez(output func(irc.Message), msg irc.Message) {
|
|||
return
|
||||
}
|
||||
|
||||
papiezLock.RLock()
|
||||
defer papiezLock.RUnlock()
|
||||
|
||||
choice := "Papież " + adjectives[rand.Intn(len(adjectives))]
|
||||
|
||||
output(reply(msg, choice))
|
||||
}
|
||||
|
||||
func lazyPapiezInit() {
|
||||
defer papiezLock.Unlock()
|
||||
cfgLock.Lock()
|
||||
defer cfgLock.Unlock()
|
||||
var err error
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
adjectives, err = readLines(cfg.LookupString(nil, "DictionaryAdjectives"))
|
||||
|
@ -46,7 +38,6 @@ func lazyPapiezInit() {
|
|||
}
|
||||
|
||||
func init() {
|
||||
papiezLock.Lock()
|
||||
log.Println("Defering \"papiez\" initialization")
|
||||
go lazyPapiezInit()
|
||||
addInit(lazyPapiezInit)
|
||||
}
|
||||
|
|
13
bot/seen.go
13
bot/seen.go
|
@ -93,12 +93,12 @@ func seen(output func(irc.Message), msg irc.Message) {
|
|||
output(reply(msg, r))
|
||||
}
|
||||
|
||||
func init() {
|
||||
func seenInit() {
|
||||
var err error
|
||||
var ktHost = "127.0.0.1"
|
||||
var ktPort = 1337
|
||||
var ktHost = cfg.LookupString(nil, "KTHost")
|
||||
var ktPort = cfg.LookupInt(nil, "KTPort")
|
||||
|
||||
log.Println("SEEN: connecting to KT")
|
||||
log.Println("seen: connecting to KT")
|
||||
k, err = kt.NewConn(ktHost, ktPort, 4, 2*time.Second)
|
||||
if err != nil {
|
||||
log.Println("error connecting to kyoto tycoon", err)
|
||||
|
@ -113,3 +113,8 @@ func init() {
|
|||
addCallback("QUIT", "seenrecord", seenrecord)
|
||||
addCallback("NOTICE", "seenrecord", seenrecord)
|
||||
}
|
||||
|
||||
func init() {
|
||||
log.Println("Defering \"papiez\" initialization")
|
||||
addInit(seenInit)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue