add setupCalled/playCalled
This commit is contained in:
parent
2f1caf9151
commit
39b65aacd6
49
client.go
49
client.go
@ -26,6 +26,10 @@ import (
|
|||||||
type Client struct {
|
type Client struct {
|
||||||
DebugConn bool
|
DebugConn bool
|
||||||
Headers []string
|
Headers []string
|
||||||
|
|
||||||
|
setupCalled bool
|
||||||
|
playCalled bool
|
||||||
|
|
||||||
url *url.URL
|
url *url.URL
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
rconn io.Reader
|
rconn io.Reader
|
||||||
@ -283,6 +287,14 @@ func (self *Client) ReadResponse() (res Response, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *Client) setupAll() (err error) {
|
||||||
|
idx := []int{}
|
||||||
|
for i := range self.streams {
|
||||||
|
idx = append(idx, i)
|
||||||
|
}
|
||||||
|
return self.Setup(idx)
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Client) Setup(streams []int) (err error) {
|
func (self *Client) Setup(streams []int) (err error) {
|
||||||
for _, si := range streams {
|
for _, si := range streams {
|
||||||
uri := ""
|
uri := ""
|
||||||
@ -304,6 +316,7 @@ func (self *Client) Setup(streams []int) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
self.setupCalled = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -679,6 +692,7 @@ func (self *Client) Play() (err error) {
|
|||||||
if err = self.WriteRequest(req); err != nil {
|
if err = self.WriteRequest(req); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
self.playCalled = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -710,32 +724,41 @@ func (self *Client) poll() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Client) ReadPacket() (i int, pkt av.Packet, err error) {
|
func (self *Client) ReadPacket() (i int, pkt av.Packet, err error) {
|
||||||
|
if !self.setupCalled {
|
||||||
|
if err = self.setupAll(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !self.playCalled {
|
||||||
|
if err = self.Play(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return self.pktque.ReadPacket()
|
return self.pktque.ReadPacket()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *Client) ReadHeader() (err error) {
|
||||||
|
if _, err = self.Describe(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func Open(uri string) (cli *Client, err error) {
|
func Open(uri string) (cli *Client, err error) {
|
||||||
_cli, err := Connect(uri)
|
var _cli *Client
|
||||||
if err != nil {
|
if _cli, err = Connect(uri); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
streams, err := _cli.Describe()
|
if _, err = _cli.Describe(); err != nil {
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
setup := []int{}
|
if err = _cli.setupAll(); err != nil {
|
||||||
for i := range streams {
|
|
||||||
setup = append(setup, i)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = _cli.Setup(setup)
|
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = _cli.Play()
|
if err = _cli.Play(); err != nil {
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user