mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-07 09:05:55 +00:00
53 lines
961 B
Go
53 lines
961 B
Go
package transport
|
|
|
|
import (
|
|
"log"
|
|
"pilosa/db"
|
|
)
|
|
|
|
type HttpTransport struct {
|
|
port int
|
|
outbox chan *db.Message
|
|
done chan int
|
|
}
|
|
|
|
func (trans *HttpTransport) Init() error {
|
|
log.Println("Bind to port", trans.port)
|
|
trans.done = make(chan int)
|
|
go trans.Loop()
|
|
return nil
|
|
}
|
|
|
|
func (trans *HttpTransport) Loop() {
|
|
var message *db.Message
|
|
for {
|
|
select {
|
|
case message = <-trans.outbox:
|
|
log.Println(message)
|
|
case <-trans.done:
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func (trans *HttpTransport) Close() {
|
|
log.Println("Closing HTTP transport.")
|
|
trans.done <- 1
|
|
}
|
|
|
|
func (trans *HttpTransport) Send(node string, message *db.Message) error {
|
|
log.Println("Send", message, "to", node)
|
|
trans.outbox <- message
|
|
return nil
|
|
}
|
|
|
|
func (trans *HttpTransport) Receive() (*db.Message, error) {
|
|
return &db.Message{}, nil
|
|
}
|
|
|
|
func NewHttpTransport(port int) *HttpTransport {
|
|
trans := new(HttpTransport)
|
|
trans.port = port
|
|
trans.outbox = make(chan *db.Message, 10)
|
|
return trans
|
|
}
|