mirror of
https://github.com/go-i2p/goSam.git
synced 2025-07-13 06:07:42 -04:00
First stab at STREAM ACCEPT
This commit is contained in:
34
accept.go
Normal file
34
accept.go
Normal 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
|
||||
}
|
20
stream.go
20
stream.go
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user