|
@@ -36,13 +36,33 @@ func NewBroker(host string, port int32) (b *Broker, err error) {
|
|
|
b.id = -1 // don't know it yet
|
|
b.id = -1 // don't know it yet
|
|
|
b.host = &host
|
|
b.host = &host
|
|
|
b.port = port
|
|
b.port = port
|
|
|
- err = b.connect()
|
|
|
|
|
|
|
+ err = b.Connect()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return nil, err
|
|
return nil, err
|
|
|
}
|
|
}
|
|
|
return b, nil
|
|
return b, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (b *Broker) Connect() (err error) {
|
|
|
|
|
+ addr, err := net.ResolveIPAddr("ip", *b.host)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ b.conn, err = net.DialTCP("tcp", nil, &net.TCPAddr{IP: addr.IP, Port: int(b.port), Zone: addr.Zone})
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ b.requests = make(chan requestToSend)
|
|
|
|
|
+ b.responses = make(chan responsePromise)
|
|
|
|
|
+
|
|
|
|
|
+ go b.sendRequestLoop()
|
|
|
|
|
+ go b.rcvResponseLoop()
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func (b *Broker) Close() error {
|
|
func (b *Broker) Close() error {
|
|
|
close(b.requests)
|
|
close(b.requests)
|
|
|
close(b.responses)
|
|
close(b.responses)
|
|
@@ -77,26 +97,6 @@ func (b *Broker) Send(clientID *string, req requestEncoder) (decoder, error) {
|
|
|
return response, nil
|
|
return response, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (b *Broker) connect() (err error) {
|
|
|
|
|
- addr, err := net.ResolveIPAddr("ip", *b.host)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return err
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- b.conn, err = net.DialTCP("tcp", nil, &net.TCPAddr{IP: addr.IP, Port: int(b.port), Zone: addr.Zone})
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return err
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- b.requests = make(chan requestToSend)
|
|
|
|
|
- b.responses = make(chan responsePromise)
|
|
|
|
|
-
|
|
|
|
|
- go b.sendRequestLoop()
|
|
|
|
|
- go b.rcvResponseLoop()
|
|
|
|
|
-
|
|
|
|
|
- return nil
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
func (b *Broker) encode(pe packetEncoder) {
|
|
func (b *Broker) encode(pe packetEncoder) {
|
|
|
pe.putInt32(b.id)
|
|
pe.putInt32(b.id)
|
|
|
pe.putString(b.host)
|
|
pe.putString(b.host)
|
|
@@ -122,11 +122,6 @@ func (b *Broker) decode(pd packetDecoder) (err error) {
|
|
|
return DecodingError("Broker port > 65536")
|
|
return DecodingError("Broker port > 65536")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- err = b.connect()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return err
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|