Refactor, wrapper around ReadChunk to manage structs
This commit is contained in:
parent
d5d2301cad
commit
5df64adcbd
3 changed files with 51 additions and 6 deletions
47
rtmp/chunk_wrap.go
Normal file
47
rtmp/chunk_wrap.go
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package rtmp
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ChunkWrapper struct {
|
||||||
|
conn net.Conn
|
||||||
|
params *ProtocolParams
|
||||||
|
open_chnkstrms map[uint32]*ChunkStream
|
||||||
|
open_msgs map[uint32]*Message
|
||||||
|
chunk_buffs *ChunkBuffers
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewChunkWrapper(conn net.Conn) (chnk_wrp_ptr *ChunkWrapper) {
|
||||||
|
chnk_wrp_ptr = new(ChunkWrapper)
|
||||||
|
|
||||||
|
chnk_wrp_ptr.conn = conn
|
||||||
|
chnk_wrp_ptr.params = &ProtocolParams{1024, 512, 0, 0}
|
||||||
|
chnk_wrp_ptr.open_chnkstrms = make(map[uint32]*ChunkStream)
|
||||||
|
chnk_wrp_ptr.open_msgs = make(map[uint32]*Message)
|
||||||
|
buffers := ChunkBuffers{
|
||||||
|
make([]byte, 4),
|
||||||
|
make([]byte, 4),
|
||||||
|
make([]byte, 1),
|
||||||
|
make([]byte, 4),
|
||||||
|
make([]byte, 1),
|
||||||
|
make([]byte, 2),
|
||||||
|
}
|
||||||
|
chnk_wrp_ptr.chunk_buffs = &buffers
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (chnk_wrp_ptr *ChunkWrapper) ReadChunk() (*Message, error) {
|
||||||
|
full_msg_ptr, err := ReadChunk(
|
||||||
|
chnk_wrp_ptr.conn,
|
||||||
|
chnk_wrp_ptr.open_chnkstrms,
|
||||||
|
chnk_wrp_ptr.open_msgs,
|
||||||
|
chnk_wrp_ptr.params.peer_chunk_size,
|
||||||
|
chnk_wrp_ptr.chunk_buffs,
|
||||||
|
&(chnk_wrp_ptr.params.curr_read),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return full_msg_ptr, nil
|
||||||
|
}
|
|
@ -1,13 +1,12 @@
|
||||||
package rtmp
|
package rtmp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NegotiateConnect(conn net.Conn, params *ProtocolParams, open_chnkstrms map[uint32]*ChunkStream, open_msgs map[uint32]*Message, chunk_bufs *ChunkBuffers) (bool) {
|
func NegotiateConnect(chnk_wrp_ptr *ChunkWrapper) (bool) {
|
||||||
for {
|
for {
|
||||||
full_msg_ptr, err := ReadChunk(conn, open_chnkstrms, open_msgs, params.peer_chunk_size, chunk_bufs, &(params.curr_read))
|
full_msg_ptr, err := chnk_wrp_ptr.ReadChunk()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,9 +40,8 @@ func handle_conn(conn net.Conn, stream_live *bool) {
|
||||||
if !DoHandshake(conn) {
|
if !DoHandshake(conn) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
params := ProtocolParams{1024, 512, 0, 0}
|
chunk_wrapper := NewChunkWrapper(conn)
|
||||||
open_chnkstrms, open_msgs, chunk_buffers := OpenStreamsMapInit()
|
if !NegotiateConnect(chunk_wrapper) {
|
||||||
if !NegotiateConnect(conn, ¶ms, open_chnkstrms, open_msgs, chunk_buffers) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue