mediamtx/internal/protocols/rtmp/handshake/c0s0.go

35 lines
518 B
Go

package handshake
import (
"fmt"
"io"
)
// C0S0 is a C0 or S0 packet.
type C0S0 struct {
Version byte
}
// Read reads a C0S0.
func (c *C0S0) Read(r io.Reader) error {
buf := make([]byte, 1)
_, err := io.ReadFull(r, buf)
if err != nil {
return err
}
c.Version = buf[0]
if c.Version != 3 && c.Version != 6 {
return fmt.Errorf("invalid rtmp version (%d)", c.Version)
}
return nil
}
// Write writes a C0S0.
func (c C0S0) Write(w io.Writer) error {
_, err := w.Write([]byte{c.Version})
return err
}