revid: finished simplifying senders

simplified rtmp and rtp senders by removing load and send methods and doing equivalent logic inside their Write functions.
This commit is contained in:
Saxon 2019-04-02 12:53:42 +10:30
parent cdd2537cc3
commit 065f8ded79
2 changed files with 8 additions and 58 deletions

View File

@ -290,27 +290,16 @@ func newRtmpSender(url string, timeout uint, retries int, log func(lvl int8, msg
// Write implements io.Writer. // Write implements io.Writer.
func (s *rtmpSender) Write(d []byte) (int, error) { func (s *rtmpSender) Write(d []byte) (int, error) {
return write(s, d)
}
func (s *rtmpSender) load(d []byte) error {
s.data = d
return nil
}
func (s *rtmpSender) send() error {
if s.conn == nil { if s.conn == nil {
return errors.New("no rtmp connection, cannot write") return 0, errors.New("no rtmp connection, cannot write")
} }
_, err := s.conn.Write(s.data) _, err := s.conn.Write(d)
if err != nil { if err != nil {
err = s.restart() err = s.restart()
} }
return err return len(d), err
} }
func (s *rtmpSender) release() {}
func (s *rtmpSender) restart() error { func (s *rtmpSender) restart() error {
s.close() s.close()
var err error var err error
@ -342,11 +331,6 @@ type rtpSender struct {
data []byte data []byte
} }
// Write implements io.Writer.
func (s *rtpSender) Write(d []byte) (int, error) {
return write(s, d)
}
func newRtpSender(addr string, log func(lvl int8, msg string, args ...interface{}), fps uint) (*rtpSender, error) { func newRtpSender(addr string, log func(lvl int8, msg string, args ...interface{}), fps uint) (*rtpSender, error) {
conn, err := net.Dial("udp", addr) conn, err := net.Dial("udp", addr)
if err != nil { if err != nil {
@ -359,30 +343,9 @@ func newRtpSender(addr string, log func(lvl int8, msg string, args ...interface{
return s, nil return s, nil
} }
func (s *rtpSender) load(d []byte) error { // Write implements io.Writer.
s.data = make([]byte, len(d)) func (s *rtpSender) Write(d []byte) (int, error) {
copy(s.data, d) return s.encoder.Write(s.data)
return nil
} }
func (s *rtpSender) close() error { return nil } func (s *rtpSender) close() error { return nil }
func (s *rtpSender) release() {}
func (s *rtpSender) send() error {
_, err := s.encoder.Write(s.data)
return err
}
// write wraps the load and send method for loadSenders.
func write(s loadSender, d []byte) (int, error) {
err := s.load(d)
if err != nil {
return 0, err
}
err = s.send()
if err != nil {
return len(d), err
}
return len(d), nil
}

View File

@ -265,25 +265,12 @@ func newDummyLoadSender(fail bool, retry bool) *dummyLoadSender {
} }
func (s *dummyLoadSender) Write(d []byte) (int, error) { func (s *dummyLoadSender) Write(d []byte) (int, error) {
return write(s, d)
}
// load takes a byte slice and assigns it to the dummyLoadSenders data slice.
func (s *dummyLoadSender) load(d []byte) error {
s.data = d
return nil
}
// send will append to dummyLoadSender's buf slice, only if failOnSend is false.
// If failOnSend is set to true, we expect that data sent won't be written to
// the buf simulating a failed send.
func (s *dummyLoadSender) send() error {
if !s.getFailOnSend() { if !s.getFailOnSend() {
s.buf = append(s.buf, s.data) s.buf = append(s.buf, s.data)
return nil return len(d), nil
} }
s.failHandled = false s.failHandled = false
return errSendFailed return 0, errSendFailed
} }
func (s *dummyLoadSender) getFailOnSend() bool { func (s *dummyLoadSender) getFailOnSend() bool {