mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
46 lines
970 B
Go
46 lines
970 B
Go
package dispatch
|
|
|
|
import (
|
|
"log"
|
|
"pilosa/core"
|
|
"pilosa/db"
|
|
"pilosa/query"
|
|
|
|
"github.com/davecgh/go-spew/spew"
|
|
)
|
|
|
|
type Dispatch struct {
|
|
service *core.Service
|
|
}
|
|
|
|
func (self *Dispatch) Init() error {
|
|
log.Println("Starting Dispatcher")
|
|
return nil
|
|
}
|
|
|
|
func (self *Dispatch) Close() {
|
|
log.Println("Shutting down Dispatcher")
|
|
}
|
|
|
|
func (self *Dispatch) Run() {
|
|
log.Println("Dispatch Run...")
|
|
for {
|
|
message := self.service.Transport.Receive()
|
|
switch data := message.Data.(type) {
|
|
case core.PingRequest:
|
|
pong := db.Message{Data: core.PongRequest{Id: data.Id}}
|
|
self.service.Transport.Send(&pong, data.Source)
|
|
case db.HoldResult:
|
|
spew.Dump("HOLD-SET", data.ResultId())
|
|
self.service.Hold.Set(data.ResultId(), data.ResultData(), 30)
|
|
case query.PortableQueryStep:
|
|
go self.service.Executor.NewJob(message)
|
|
default:
|
|
log.Println("Unprocessed message", data)
|
|
}
|
|
}
|
|
}
|
|
|
|
func NewDispatch(service *core.Service) *Dispatch {
|
|
return &Dispatch{service}
|
|
}
|