Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
8 years ago
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
d3bb8b6a862feee739aba360bc6c6d6e3d132696
d3bb8b6a
1 parent
eaa222f0
for #742, refine the io interfaces.
隐藏空白字符变更
内嵌
并排对比
正在显示
9 个修改的文件
包含
73 行增加
和
33 行删除
trunk/src/kernel/srs_kernel_file.hpp
trunk/src/kernel/srs_kernel_io.cpp
trunk/src/kernel/srs_kernel_io.hpp
trunk/src/libs/srs_lib_simple_socket.cpp
trunk/src/libs/srs_lib_simple_socket.hpp
trunk/src/protocol/srs_protocol_io.hpp
trunk/src/protocol/srs_protocol_stream.cpp
trunk/src/protocol/srs_protocol_stream.hpp
trunk/src/utest/srs_utest_kernel.hpp
trunk/src/kernel/srs_kernel_file.hpp
查看文件 @
d3bb8b6
...
...
@@ -41,7 +41,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
/**
* file writer, to write to file.
*/
class
SrsFileWriter
:
public
ISrs
Buffer
Writer
class
SrsFileWriter
:
public
ISrsWriter
{
private
:
std
::
string
path
;
...
...
@@ -85,7 +85,7 @@ public:
/**
* file reader, to read from file.
*/
class
SrsFileReader
:
public
ISrs
Buffer
Reader
class
SrsFileReader
:
public
ISrsReader
{
private
:
std
::
string
path
;
...
...
trunk/src/kernel/srs_kernel_io.cpp
查看文件 @
d3bb8b6
...
...
@@ -23,19 +23,35 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_kernel_io.hpp>
ISrs
BufferReader
::
ISrsBuffer
Reader
()
ISrs
Reader
::
ISrs
Reader
()
{
}
ISrs
BufferReader
::~
ISrsBuffer
Reader
()
ISrs
Reader
::~
ISrs
Reader
()
{
}
ISrs
BufferWriter
::
ISrsBuffer
Writer
()
ISrs
StreamWriter
::
ISrsStream
Writer
()
{
}
ISrsBufferWriter
::~
ISrsBufferWriter
()
ISrsStreamWriter
::~
ISrsStreamWriter
()
{
}
ISrsVectorWriter
::
ISrsVectorWriter
()
{
}
ISrsVectorWriter
::~
ISrsVectorWriter
()
{
}
ISrsWriter
::
ISrsWriter
()
{
}
ISrsWriter
::~
ISrsWriter
()
{
}
...
...
trunk/src/kernel/srs_kernel_io.hpp
查看文件 @
d3bb8b6
...
...
@@ -36,33 +36,42 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#endif
/**
*
the reader for the buffer to read from whatever
channel.
*
The reader to read data from
channel.
*/
class
ISrs
Buffer
Reader
class
ISrsReader
{
public
:
ISrsBufferReader
();
virtual
~
ISrsBufferReader
();
// for protocol/amf0/msg-codec
ISrsReader
();
virtual
~
ISrsReader
();
public
:
virtual
int
read
(
void
*
buf
,
size_t
size
,
ssize_t
*
nread
)
=
0
;
};
/**
*
the writer for the buffer to write to whatever
channel.
*
The writer to write stream data to
channel.
*/
class
ISrs
Buffer
Writer
class
ISrs
Stream
Writer
{
public
:
ISrsBufferWriter
();
virtual
~
ISrsBufferWriter
();
// for protocol
ISrsStreamWriter
();
virtual
~
ISrsStreamWriter
();
public
:
/**
* write bytes over writer.
* @nwrite the actual written bytes. NULL to ignore.
*/
virtual
int
write
(
void
*
buf
,
size_t
size
,
ssize_t
*
nwrite
)
=
0
;
};
/**
* The vector writer to write vector(iovc) to channel.
*/
class
ISrsVectorWriter
{
public
:
ISrsVectorWriter
();
virtual
~
ISrsVectorWriter
();
public
:
/**
* write iov over writer.
* @nwrite the actual written bytes. NULL to ignore.
...
...
@@ -70,5 +79,15 @@ public:
virtual
int
writev
(
const
iovec
*
iov
,
int
iov_size
,
ssize_t
*
nwrite
)
=
0
;
};
/**
* The generally writer, stream and vector writer.
*/
class
ISrsWriter
:
virtual
public
ISrsStreamWriter
,
virtual
public
ISrsVectorWriter
{
public
:
ISrsWriter
();
virtual
~
ISrsWriter
();
};
#endif
...
...
trunk/src/libs/srs_lib_simple_socket.cpp
查看文件 @
d3bb8b6
...
...
@@ -341,7 +341,7 @@ int SimpleSocketStream::connect(const char* server_ip, int port)
return
srs_hijack_io_connect
(
io
,
server_ip
,
port
);
}
// ISrs
Buffer
Reader
// ISrsReader
int
SimpleSocketStream
::
read
(
void
*
buf
,
size_t
size
,
ssize_t
*
nread
)
{
srs_assert
(
io
);
...
...
trunk/src/libs/srs_lib_simple_socket.hpp
查看文件 @
d3bb8b6
...
...
@@ -53,7 +53,7 @@ public:
virtual
srs_hijack_io_t
hijack_io
();
virtual
int
create_socket
(
srs_rtmp_t
owner
);
virtual
int
connect
(
const
char
*
server
,
int
port
);
// ISrs
Buffer
Reader
// ISrsReader
public:
virtual
int
read
(
void
*
buf
,
size_t
size
,
ssize_t
*
nread
);
// ISrsProtocolReader
...
...
trunk/src/protocol/srs_protocol_io.hpp
查看文件 @
d3bb8b6
...
...
@@ -34,15 +34,20 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
/**
* the system io reader/writer architecture:
+---------------+ +--------------------+ +---------------+
| IBufferReader | | IStatistic | | IBufferWriter |
+---------------+ +--------------------+ +---------------+
| + read() | | + get_recv_bytes() | | + write() |
+------+--------+ | + get_send_bytes() | | + writev() |
/ \ +---+--------------+-+ +-------+-------+
| / \ / \ / \
| | | |
+------+------------------+-+ +-----+----------------+--+
+---------------+ +---------------+
| IStreamWriter | | IVectorWriter |
+---------------+ +---------------+
| + write() | | + writev() |
+-------------+-+ ++--------------+
+----------+ +--------------------+ /\ /\
| IReader | | IStatistic | \ /
+----------+ +--------------------+ V
| + read() | | + get_recv_bytes() | +------+----+
+------+---+ | + get_send_bytes() | | IWriter |
/ \ +---+--------------+-+ +-------+---+
| / \ / \ / \
| | | |
+------+-------------+------+ ++---------------------+--+
| IProtocolReader | | IProtocolWriter |
+---------------------------+ +-------------------------+
| + readfully() | | + set_send_timeout() |
...
...
@@ -80,7 +85,7 @@ public:
/**
* the reader for the protocol to read from whatever channel.
*/
class
ISrsProtocolReader
:
public
virtual
ISrs
Buffer
Reader
,
public
virtual
ISrsProtocolStatistic
class
ISrsProtocolReader
:
public
virtual
ISrsReader
,
public
virtual
ISrsProtocolStatistic
{
public
:
ISrsProtocolReader
();
...
...
@@ -108,7 +113,7 @@ public:
/**
* the writer for the protocol to write to whatever channel.
*/
class
ISrsProtocolWriter
:
public
virtual
ISrs
Buffer
Writer
,
public
virtual
ISrsProtocolStatistic
class
ISrsProtocolWriter
:
public
virtual
ISrsWriter
,
public
virtual
ISrsProtocolStatistic
{
public
:
ISrsProtocolWriter
();
...
...
trunk/src/protocol/srs_protocol_stream.cpp
查看文件 @
d3bb8b6
...
...
@@ -131,7 +131,7 @@ void SrsFastStream::skip(int size)
p
+=
size
;
}
int
SrsFastStream
::
grow
(
ISrs
Buffer
Reader
*
reader
,
int
required_size
)
int
SrsFastStream
::
grow
(
ISrsReader
*
reader
,
int
required_size
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
trunk/src/protocol/srs_protocol_stream.hpp
查看文件 @
d3bb8b6
...
...
@@ -60,7 +60,7 @@ public:
* the buffer provices bytes cache for protocol. generally,
* protocol recv data from socket, put into buffer, decode to RTMP message.
* Usage:
* ISrs
Buffer
Reader* r = ......;
* ISrsReader* r = ......;
* SrsFastStream* fb = ......;
* fb->grow(r, 1024);
* char* header = fb->read_slice(100);
...
...
@@ -138,7 +138,7 @@ public:
* @return an int error code, error if required_size negative.
* @remark, we actually maybe read more than required_size, maybe 4k for example.
*/
virtual
int
grow
(
ISrs
Buffer
Reader
*
reader
,
int
required_size
);
virtual
int
grow
(
ISrsReader
*
reader
,
int
required_size
);
public
:
#ifdef SRS_PERF_MERGED_READ
/**
...
...
trunk/src/utest/srs_utest_kernel.hpp
查看文件 @
d3bb8b6
...
...
@@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_kernel_file.hpp>
#include <srs_protocol_stream.hpp>
class
MockBufferReader
:
public
ISrs
Buffer
Reader
class
MockBufferReader
:
public
ISrsReader
{
private
:
std
::
string
str
;
...
...
请
注册
或
登录
后发表评论