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
2014-03-27 13:25:08 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
6913efe1275219af689487ca88799bd8fd016e26
6913efe1
1 parent
ab3c6c92
implements the http api/stream framework
隐藏空白字符变更
内嵌
并排对比
正在显示
9 个修改的文件
包含
107 行增加
和
47 行删除
trunk/src/app/srs_app_conn.cpp
trunk/src/app/srs_app_conn.hpp
trunk/src/app/srs_app_http_api.cpp
trunk/src/app/srs_app_http_api.hpp
trunk/src/app/srs_app_http_conn.cpp
trunk/src/app/srs_app_http_conn.hpp
trunk/src/app/srs_app_rtmp_conn.cpp
trunk/src/app/srs_app_rtmp_conn.hpp
trunk/src/app/srs_app_server.cpp
trunk/src/app/srs_app_conn.cpp
查看文件 @
6913efe
...
...
@@ -23,12 +23,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_conn.hpp>
#include <arpa/inet.h>
#include <srs_kernel_log.hpp>
#include <srs_kernel_error.hpp>
#include <srs_app_server.hpp>
SrsConnection
::
SrsConnection
(
SrsServer
*
srs_server
,
st_netfd_t
client_stfd
)
{
ip
=
NULL
;
server
=
srs_server
;
stfd
=
client_stfd
;
connection_id
=
0
;
...
...
@@ -36,6 +39,7 @@ SrsConnection::SrsConnection(SrsServer* srs_server, st_netfd_t client_stfd)
SrsConnection
::~
SrsConnection
()
{
srs_freepa
(
ip
);
srs_close_stfd
(
stfd
);
}
...
...
@@ -53,6 +57,41 @@ int SrsConnection::start()
return
ret
;
}
int
SrsConnection
::
get_peer_ip
()
{
int
ret
=
ERROR_SUCCESS
;
int
fd
=
st_netfd_fileno
(
stfd
);
// discovery client information
sockaddr_in
addr
;
socklen_t
addrlen
=
sizeof
(
addr
);
if
(
getpeername
(
fd
,
(
sockaddr
*
)
&
addr
,
&
addrlen
)
==
-
1
)
{
ret
=
ERROR_SOCKET_GET_PEER_NAME
;
srs_error
(
"discovery client information failed. ret=%d"
,
ret
);
return
ret
;
}
srs_verbose
(
"get peer name success."
);
// ip v4 or v6
char
buf
[
INET6_ADDRSTRLEN
];
memset
(
buf
,
0
,
sizeof
(
buf
));
if
((
inet_ntop
(
addr
.
sin_family
,
&
addr
.
sin_addr
,
buf
,
sizeof
(
buf
)))
==
NULL
)
{
ret
=
ERROR_SOCKET_GET_PEER_IP
;
srs_error
(
"convert client information failed. ret=%d"
,
ret
);
return
ret
;
}
srs_verbose
(
"get peer ip of client ip=%s, fd=%d"
,
buf
,
fd
);
ip
=
new
char
[
strlen
(
buf
)
+
1
];
strcpy
(
ip
,
buf
);
srs_verbose
(
"get peer ip success. ip=%s, fd=%d"
,
ip
,
fd
);
return
ret
;
}
void
SrsConnection
::
cycle
()
{
int
ret
=
ERROR_SUCCESS
;
...
...
trunk/src/app/srs_app_conn.hpp
查看文件 @
6913efe
...
...
@@ -36,6 +36,7 @@ class SrsServer;
class
SrsConnection
{
protected
:
char
*
ip
;
SrsServer
*
server
;
st_netfd_t
stfd
;
int
connection_id
;
...
...
@@ -46,6 +47,8 @@ public:
virtual
int
start
();
protected
:
virtual
int
do_cycle
()
=
0
;
protected
:
virtual
int
get_peer_ip
();
private
:
virtual
void
cycle
();
static
void
*
cycle_thread
(
void
*
arg
);
...
...
trunk/src/app/srs_app_http_api.cpp
查看文件 @
6913efe
...
...
@@ -23,8 +23,27 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_http_api.hpp>
SrsHttpApi
::
SrsHttpApi
()
{
#include <srs_kernel_log.hpp>
#include <srs_kernel_error.hpp>
SrsHttpApi
::
SrsHttpApi
(
SrsServer
*
srs_server
,
st_netfd_t
client_stfd
)
:
SrsConnection
(
srs_server
,
client_stfd
)
{
}
SrsHttpApi
::~
SrsHttpApi
()
{
}
SrsHttpApi
::~
SrsHttpApi
()
{
int
SrsHttpApi
::
do_cycle
()
{
int
ret
=
ERROR_SUCCESS
;
if
((
ret
=
get_peer_ip
())
!=
ERROR_SUCCESS
)
{
srs_error
(
"get peer ip failed. ret=%d"
,
ret
);
return
ret
;
}
srs_trace
(
"api get peer ip success. ip=%s"
,
ip
);
return
ret
;
}
...
...
trunk/src/app/srs_app_http_api.hpp
查看文件 @
6913efe
...
...
@@ -30,11 +30,16 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_core.hpp>
class
SrsHttpApi
#include <srs_app_st.hpp>
#include <srs_app_conn.hpp>
class
SrsHttpApi
:
public
SrsConnection
{
public
:
SrsHttpApi
();
SrsHttpApi
(
SrsServer
*
srs_server
,
st_netfd_t
client_stfd
);
virtual
~
SrsHttpApi
();
protected
:
virtual
int
do_cycle
();
};
#endif
...
...
trunk/src/app/srs_app_http_conn.cpp
查看文件 @
6913efe
...
...
@@ -22,3 +22,28 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <srs_app_http_conn.hpp>
#include <srs_kernel_log.hpp>
#include <srs_kernel_error.hpp>
SrsHttpConn
::
SrsHttpConn
(
SrsServer
*
srs_server
,
st_netfd_t
client_stfd
)
:
SrsConnection
(
srs_server
,
client_stfd
)
{
}
SrsHttpConn
::~
SrsHttpConn
()
{
}
int
SrsHttpConn
::
do_cycle
()
{
int
ret
=
ERROR_SUCCESS
;
if
((
ret
=
get_peer_ip
())
!=
ERROR_SUCCESS
)
{
srs_error
(
"get peer ip failed. ret=%d"
,
ret
);
return
ret
;
}
srs_trace
(
"http get peer ip success. ip=%s"
,
ip
);
return
ret
;
}
...
...
trunk/src/app/srs_app_http_conn.hpp
查看文件 @
6913efe
...
...
@@ -30,11 +30,16 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_core.hpp>
class
SrsHttpConn
#include <srs_app_st.hpp>
#include <srs_app_conn.hpp>
class
SrsHttpConn
:
public
SrsConnection
{
public
:
SrsHttpConn
();
SrsHttpConn
(
SrsServer
*
srs_server
,
st_netfd_t
client_stfd
);
virtual
~
SrsHttpConn
();
protected
:
virtual
int
do_cycle
();
};
#endif
...
...
trunk/src/app/srs_app_rtmp_conn.cpp
查看文件 @
6913efe
...
...
@@ -23,7 +23,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_rtmp_conn.hpp>
#include <arpa/inet.h>
#include <stdlib.h>
using
namespace
std
;
...
...
@@ -46,7 +45,6 @@ using namespace std;
SrsRtmpConn
::
SrsRtmpConn
(
SrsServer
*
srs_server
,
st_netfd_t
client_stfd
)
:
SrsConnection
(
srs_server
,
client_stfd
)
{
ip
=
NULL
;
req
=
new
SrsRequest
();
res
=
new
SrsResponse
();
skt
=
new
SrsSocket
(
client_stfd
);
...
...
@@ -64,7 +62,6 @@ SrsRtmpConn::~SrsRtmpConn()
{
_srs_config
->
unsubscribe
(
this
);
srs_freepa
(
ip
);
srs_freep
(
req
);
srs_freep
(
res
);
srs_freep
(
rtmp
);
...
...
@@ -85,7 +82,7 @@ int SrsRtmpConn::do_cycle()
srs_error
(
"get peer ip failed. ret=%d"
,
ret
);
return
ret
;
}
srs_trace
(
"
get peer ip success. ip=%s, send_to=%"
PRId64
", recv_to=%"
PRId64
"
"
,
srs_trace
(
"
rtmp get peer ip success. ip=%s, send_to=%"
PRId64
"us, recv_to=%"
PRId64
"us
"
,
ip
,
SRS_SEND_TIMEOUT_US
,
SRS_RECV_TIMEOUT_US
);
rtmp
->
set_recv_timeout
(
SRS_RECV_TIMEOUT_US
);
...
...
@@ -639,41 +636,6 @@ int SrsRtmpConn::process_publish_message(SrsSource* source, SrsCommonMessage* ms
return
ret
;
}
int
SrsRtmpConn
::
get_peer_ip
()
{
int
ret
=
ERROR_SUCCESS
;
int
fd
=
st_netfd_fileno
(
stfd
);
// discovery client information
sockaddr_in
addr
;
socklen_t
addrlen
=
sizeof
(
addr
);
if
(
getpeername
(
fd
,
(
sockaddr
*
)
&
addr
,
&
addrlen
)
==
-
1
)
{
ret
=
ERROR_SOCKET_GET_PEER_NAME
;
srs_error
(
"discovery client information failed. ret=%d"
,
ret
);
return
ret
;
}
srs_verbose
(
"get peer name success."
);
// ip v4 or v6
char
buf
[
INET6_ADDRSTRLEN
];
memset
(
buf
,
0
,
sizeof
(
buf
));
if
((
inet_ntop
(
addr
.
sin_family
,
&
addr
.
sin_addr
,
buf
,
sizeof
(
buf
)))
==
NULL
)
{
ret
=
ERROR_SOCKET_GET_PEER_IP
;
srs_error
(
"convert client information failed. ret=%d"
,
ret
);
return
ret
;
}
srs_verbose
(
"get peer ip of client ip=%s, fd=%d"
,
buf
,
fd
);
ip
=
new
char
[
strlen
(
buf
)
+
1
];
strcpy
(
ip
,
buf
);
srs_verbose
(
"get peer ip success. ip=%s, fd=%d"
,
ip
,
fd
);
return
ret
;
}
int
SrsRtmpConn
::
process_play_control_msg
(
SrsConsumer
*
consumer
,
SrsCommonMessage
*
msg
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
trunk/src/app/srs_app_rtmp_conn.hpp
查看文件 @
6913efe
...
...
@@ -53,7 +53,6 @@ class SrsBandwidth;
class
SrsRtmpConn
:
public
SrsConnection
,
public
ISrsReloadHandler
{
private
:
char
*
ip
;
SrsRequest
*
req
;
SrsResponse
*
res
;
SrsSocket
*
skt
;
...
...
@@ -81,7 +80,6 @@ private:
virtual
int
fmle_publish
(
SrsSource
*
source
);
virtual
int
flash_publish
(
SrsSource
*
source
);
virtual
int
process_publish_message
(
SrsSource
*
source
,
SrsCommonMessage
*
msg
);
virtual
int
get_peer_ip
();
virtual
int
process_play_control_msg
(
SrsConsumer
*
consumer
,
SrsCommonMessage
*
msg
);
private
:
virtual
int
on_connect
();
...
...
trunk/src/app/srs_app_server.cpp
查看文件 @
6913efe
...
...
@@ -38,6 +38,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_rtmp_conn.hpp>
#include <srs_app_config.hpp>
#include <srs_kernel_utility.hpp>
#include <srs_app_http_api.hpp>
#include <srs_app_http_conn.hpp>
#define SERVER_LISTEN_BACKLOG 512
#define SRS_TIME_RESOLUTION_MS 500
...
...
@@ -436,7 +438,9 @@ int SrsServer::accept_client(SrsListenerType type, st_netfd_t client_stfd)
if
(
type
==
SrsListenerRtmpStream
)
{
conn
=
new
SrsRtmpConn
(
this
,
client_stfd
);
}
else
if
(
type
==
SrsListenerHttpApi
)
{
conn
=
new
SrsHttpApi
(
this
,
client_stfd
);
}
else
if
(
type
==
SrsListenerHttpStream
)
{
conn
=
new
SrsHttpConn
(
this
,
client_stfd
);
}
else
{
// TODO: FIXME: handler others
}
...
...
请
注册
或
登录
后发表评论