Merge pull request #50 from arachnist/rework-initialization

Rework initialization of some plugins.

Fixes #42
master
Robert S. Gerus 2015-12-23 07:56:04 +01:00
commit 29cdd169f6
5 changed files with 25 additions and 29 deletions

View File

@ -12,5 +12,7 @@
"DictionaryObjects":".dicts/objects",
"DictionaryVerbs":".dicts/verbs",
"DictionaryAdjectives":".dicts/adjectives",
"KTHost":"127.0.0.1",
"KTPort":1337,
"Nick":"gorepost"
}

View File

@ -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()
}
}

View File

@ -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)
}

View File

@ -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)
}

View File

@ -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)
}