First stab at STREAM ACCEPT

This commit is contained in:
Henry
2014-02-12 22:14:19 +01:00
parent a421daf8d9
commit c9345cbcdb
2 changed files with 54 additions and 0 deletions

34
accept.go Normal file
View File

@ -0,0 +1,34 @@
package goSam
import (
"fmt"
"net"
)
// creates a new Client and Accept a connection on it
func (c *Client) Accept() (net.Conn, error) {
id, newAddr, err := c.CreateStreamSession("")
if err != nil {
return nil, err
}
fmt.Println("NewAddr:", newAddr)
newC, err := NewDefaultClient()
if err != nil {
return nil, err
}
if c.verbose {
newC.ToggleVerbose()
}
resp, err := newC.StreamAccept(id)
if err != nil {
return nil, err
}
fmt.Println("Accept Resp:", resp)
return newC.SamConn, nil
}

View File

@ -24,3 +24,23 @@ func (c *Client) StreamConnect(id int32, dest string) (err error) {
return nil
}
// Ask SAM to accept a TCP-Like connection
func (c *Client) StreamAccept(id int32) (r *Reply, err error) {
r, err = c.sendCmd(fmt.Sprintf("STREAM ACCEPT ID=%d SILENT=false", id))
if err != nil {
return nil, err
}
if r.Topic != "STREAM" || r.Type != "STATUS" {
return nil, fmt.Errorf("Unknown Reply: %+v\n", r)
}
result := r.Pairs["RESULT"]
if result != "OK" {
return nil, ReplyError{result, r}
}
return r, nil
}