tg: Separate processing loop so we can actually have an external broker!

This commit is contained in:
Hamcha 2017-05-04 16:54:23 +02:00
parent cf35e8b32b
commit 3977a5de53
1 changed files with 10 additions and 4 deletions

View File

@ -15,15 +15,20 @@ type BrokerCallback func(broker *Broker, update BrokerUpdate)
// CreateBrokerClient creates a connection to a broker and sends all webhook updates to a given function.
// This is the intended way to create clients, please refer to examples for how to make a simple client.
func CreateBrokerClient(brokerAddr string, updateFn UpdateHandler) (*Broker, error) {
func CreateBrokerClient(brokerAddr string, updateFn UpdateHandler) error {
broker, err := ConnectToBroker(brokerAddr)
if err != nil {
return nil, err
return err
}
defer broker.Close()
return RunBrokerClient(broker, updateFn)
}
// RunBrokerClient is a slimmer version of CreateBrokerClient for who wants to keep its own broker connection
func RunBrokerClient(broker *Broker, updateFn UpdateHandler) error {
in := bufio.NewReader(broker.Socket)
buf := make([]byte, 0)
var buf []byte
for {
bytes, isPrefix, err := in.ReadLine()
if err != nil {
@ -54,5 +59,6 @@ func CreateBrokerClient(brokerAddr string, updateFn UpdateHandler) (*Broker, err
// Empty buffer
buf = []byte{}
}
return broker, io.EOF
return io.EOF
}