diff --git a/trunk/configure b/trunk/configure index bc525c891..53fa3152c 100755 --- a/trunk/configure +++ b/trunk/configure @@ -168,7 +168,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then MODULE_ID="APP" MODULE_DEPENDS=("CORE" "KERNEL" "PROTOCOL") ModuleLibIncs=(${LibSTRoot} ${LibHttpParserRoot} ${SRS_OBJS_DIR}) - MODULE_FILES=("srs_app_server" "srs_app_conn" "srs_app_rtmp_conn" "srs_app_st_socket" "srs_app_source" + MODULE_FILES=("srs_app_server" "srs_app_conn" "srs_app_rtmp_conn" "srs_app_source" "srs_app_refer" "srs_app_hls" "srs_app_forward" "srs_app_encoder" "srs_app_thread" "srs_app_bandwidth" "srs_app_st" "srs_app_log" "srs_app_config" "srs_app_pithy_print" "srs_app_reload" "srs_app_http_api" "srs_app_http_conn" "srs_app_http_hooks" diff --git a/trunk/ide/srs_upp/srs_upp.upp b/trunk/ide/srs_upp/srs_upp.upp index b8eeba9dd..e06c05bb9 100755 --- a/trunk/ide/srs_upp/srs_upp.upp +++ b/trunk/ide/srs_upp/srs_upp.upp @@ -131,8 +131,6 @@ file ../../src/app/srs_app_server.cpp, ../../src/app/srs_app_st.hpp, ../../src/app/srs_app_st.cpp, - ../../src/app/srs_app_st_socket.hpp, - ../../src/app/srs_app_st_socket.cpp, ../../src/app/srs_app_statistic.hpp, ../../src/app/srs_app_statistic.cpp, ../../src/app/srs_app_source.hpp, diff --git a/trunk/ide/srs_vs2010/srs.vcxproj b/trunk/ide/srs_vs2010/srs.vcxproj index b2d0fea37..98b514de1 100755 --- a/trunk/ide/srs_vs2010/srs.vcxproj +++ b/trunk/ide/srs_vs2010/srs.vcxproj @@ -95,7 +95,6 @@ - @@ -176,7 +175,6 @@ - diff --git a/trunk/ide/srs_vs2010/srs.vcxproj.filters b/trunk/ide/srs_vs2010/srs.vcxproj.filters index 568d30380..8cff84e3f 100755 --- a/trunk/ide/srs_vs2010/srs.vcxproj.filters +++ b/trunk/ide/srs_vs2010/srs.vcxproj.filters @@ -103,9 +103,6 @@ srs - - srs - srs @@ -327,9 +324,6 @@ srs - - srs - srs diff --git a/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj index 490ee5273..1307b19e5 100644 --- a/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj +++ b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj @@ -63,7 +63,6 @@ 3C1232B01AAE81D900CE8F6C /* srs_app_security.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232841AAE81D900CE8F6C /* srs_app_security.cpp */; }; 3C1232B11AAE81D900CE8F6C /* srs_app_server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232861AAE81D900CE8F6C /* srs_app_server.cpp */; }; 3C1232B21AAE81D900CE8F6C /* srs_app_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */; }; - 3C1232B31AAE81D900CE8F6C /* srs_app_st_socket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */; }; 3C1232B41AAE81D900CE8F6C /* srs_app_st.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */; }; 3C1232B51AAE81D900CE8F6C /* srs_app_statistic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */; }; 3C1232B61AAE81D900CE8F6C /* srs_app_thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232901AAE81D900CE8F6C /* srs_app_thread.cpp */; }; @@ -235,8 +234,6 @@ 3C1232871AAE81D900CE8F6C /* srs_app_server.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_server.hpp; path = ../../../src/app/srs_app_server.hpp; sourceTree = ""; }; 3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_source.cpp; path = ../../../src/app/srs_app_source.cpp; sourceTree = ""; }; 3C1232891AAE81D900CE8F6C /* srs_app_source.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_source.hpp; path = ../../../src/app/srs_app_source.hpp; sourceTree = ""; }; - 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_st_socket.cpp; path = ../../../src/app/srs_app_st_socket.cpp; sourceTree = ""; }; - 3C12328B1AAE81D900CE8F6C /* srs_app_st_socket.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_st_socket.hpp; path = ../../../src/app/srs_app_st_socket.hpp; sourceTree = ""; }; 3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_st.cpp; path = ../../../src/app/srs_app_st.cpp; sourceTree = ""; }; 3C12328D1AAE81D900CE8F6C /* srs_app_st.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_st.hpp; path = ../../../src/app/srs_app_st.hpp; sourceTree = ""; }; 3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_statistic.cpp; path = ../../../src/app/srs_app_statistic.cpp; sourceTree = ""; }; @@ -582,8 +579,6 @@ 3C1232871AAE81D900CE8F6C /* srs_app_server.hpp */, 3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */, 3C1232891AAE81D900CE8F6C /* srs_app_source.hpp */, - 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */, - 3C12328B1AAE81D900CE8F6C /* srs_app_st_socket.hpp */, 3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */, 3C12328D1AAE81D900CE8F6C /* srs_app_st.hpp */, 3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */, @@ -901,7 +896,6 @@ 3C663F121AB0155100286D8B /* srs_detect_rtmp.c in Sources */, 3C1232B11AAE81D900CE8F6C /* srs_app_server.cpp in Sources */, 3C689F9F1AB6AAC800C9CEEE /* sched.c in Sources */, - 3C1232B31AAE81D900CE8F6C /* srs_app_st_socket.cpp in Sources */, 3C1232061AAE812C00CE8F6C /* srs_main_server.cpp in Sources */, 3C1232281AAE814D00CE8F6C /* srs_kernel_mp3.cpp in Sources */, 3C1232B21AAE81D900CE8F6C /* srs_app_source.cpp in Sources */, diff --git a/trunk/src/app/srs_app_caster_flv.cpp b/trunk/src/app/srs_app_caster_flv.cpp index 2f7112d69..1a05c8714 100644 --- a/trunk/src/app/srs_app_caster_flv.cpp +++ b/trunk/src/app/srs_app_caster_flv.cpp @@ -38,7 +38,7 @@ using namespace std; #include #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_edge.cpp b/trunk/src/app/srs_app_edge.cpp index 86f060539..ef57a237b 100644 --- a/trunk/src/app/srs_app_edge.cpp +++ b/trunk/src/app/srs_app_edge.cpp @@ -35,7 +35,7 @@ using namespace std; #include #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_forward.cpp b/trunk/src/app/srs_app_forward.cpp index 673c191d2..eab350a5c 100644 --- a/trunk/src/app/srs_app_forward.cpp +++ b/trunk/src/app/srs_app_forward.cpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using namespace std; #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_http_api.cpp b/trunk/src/app/srs_app_http_api.cpp index 910c6fb59..b21fadedc 100644 --- a/trunk/src/app/srs_app_http_api.cpp +++ b/trunk/src/app/srs_app_http_api.cpp @@ -30,7 +30,7 @@ using namespace std; #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_http_client.cpp b/trunk/src/app/srs_app_http_client.cpp index 07c8cfe43..23ef1f3af 100644 --- a/trunk/src/app/srs_app_http_client.cpp +++ b/trunk/src/app/srs_app_http_client.cpp @@ -31,7 +31,7 @@ using namespace std; #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_http_conn.cpp b/trunk/src/app/srs_app_http_conn.cpp index 9a04a0cc2..7e38341e0 100644 --- a/trunk/src/app/srs_app_http_conn.cpp +++ b/trunk/src/app/srs_app_http_conn.cpp @@ -37,7 +37,7 @@ using namespace std; #include #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_http_hooks.cpp b/trunk/src/app/srs_app_http_hooks.cpp index ea3908814..3c1eda3ea 100644 --- a/trunk/src/app/srs_app_http_hooks.cpp +++ b/trunk/src/app/srs_app_http_hooks.cpp @@ -30,7 +30,7 @@ using namespace std; #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_mpegts_udp.cpp b/trunk/src/app/srs_app_mpegts_udp.cpp index 21c824e5e..c9d5f342b 100644 --- a/trunk/src/app/srs_app_mpegts_udp.cpp +++ b/trunk/src/app/srs_app_mpegts_udp.cpp @@ -43,7 +43,7 @@ using namespace std; #include #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_rtmp_conn.cpp b/trunk/src/app/srs_app_rtmp_conn.cpp index 362d69d35..a199a17f7 100644 --- a/trunk/src/app/srs_app_rtmp_conn.cpp +++ b/trunk/src/app/srs_app_rtmp_conn.cpp @@ -42,7 +42,7 @@ using namespace std; #include #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_rtsp.cpp b/trunk/src/app/srs_app_rtsp.cpp index cad3a8546..f480b8309 100644 --- a/trunk/src/app/srs_app_rtsp.cpp +++ b/trunk/src/app/srs_app_rtsp.cpp @@ -29,7 +29,7 @@ using namespace std; #include #include #include -#include +#include #include #include #include diff --git a/trunk/src/app/srs_app_st.cpp b/trunk/src/app/srs_app_st.cpp index 453560795..be57af3eb 100644 --- a/trunk/src/app/srs_app_st.cpp +++ b/trunk/src/app/srs_app_st.cpp @@ -26,6 +26,162 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include +SrsStSocket::SrsStSocket(st_netfd_t client_stfd) +{ + stfd = client_stfd; + send_timeout = recv_timeout = ST_UTIME_NO_TIMEOUT; + recv_bytes = send_bytes = 0; +} + +SrsStSocket::~SrsStSocket() +{ +} + +bool SrsStSocket::is_never_timeout(int64_t timeout_us) +{ + return timeout_us == (int64_t)ST_UTIME_NO_TIMEOUT; +} + +void SrsStSocket::set_recv_timeout(int64_t timeout_us) +{ + recv_timeout = timeout_us; +} + +int64_t SrsStSocket::get_recv_timeout() +{ + return recv_timeout; +} + +void SrsStSocket::set_send_timeout(int64_t timeout_us) +{ + send_timeout = timeout_us; +} + +int64_t SrsStSocket::get_send_timeout() +{ + return send_timeout; +} + +int64_t SrsStSocket::get_recv_bytes() +{ + return recv_bytes; +} + +int64_t SrsStSocket::get_send_bytes() +{ + return send_bytes; +} + +int SrsStSocket::read(void* buf, size_t size, ssize_t* nread) +{ + int ret = ERROR_SUCCESS; + + ssize_t nb_read = st_read(stfd, buf, size, recv_timeout); + if (nread) { + *nread = nb_read; + } + + // On success a non-negative integer indicating the number of bytes actually read is returned + // (a value of 0 means the network connection is closed or end of file is reached). + // Otherwise, a value of -1 is returned and errno is set to indicate the error. + if (nb_read <= 0) { + // @see https://github.com/simple-rtmp-server/srs/issues/200 + if (nb_read < 0 && errno == ETIME) { + return ERROR_SOCKET_TIMEOUT; + } + + if (nb_read == 0) { + errno = ECONNRESET; + } + + return ERROR_SOCKET_READ; + } + + recv_bytes += nb_read; + + return ret; +} + +int SrsStSocket::read_fully(void* buf, size_t size, ssize_t* nread) +{ + int ret = ERROR_SUCCESS; + + ssize_t nb_read = st_read_fully(stfd, buf, size, recv_timeout); + if (nread) { + *nread = nb_read; + } + + // On success a non-negative integer indicating the number of bytes actually read is returned + // (a value less than nbyte means the network connection is closed or end of file is reached) + // Otherwise, a value of -1 is returned and errno is set to indicate the error. + if (nb_read != (ssize_t)size) { + // @see https://github.com/simple-rtmp-server/srs/issues/200 + if (nb_read < 0 && errno == ETIME) { + return ERROR_SOCKET_TIMEOUT; + } + + if (nb_read >= 0) { + errno = ECONNRESET; + } + + return ERROR_SOCKET_READ_FULLY; + } + + recv_bytes += nb_read; + + return ret; +} + +int SrsStSocket::write(void* buf, size_t size, ssize_t* nwrite) +{ + int ret = ERROR_SUCCESS; + + ssize_t nb_write = st_write(stfd, buf, size, send_timeout); + if (nwrite) { + *nwrite = nb_write; + } + + // On success a non-negative integer equal to nbyte is returned. + // Otherwise, a value of -1 is returned and errno is set to indicate the error. + if (nb_write <= 0) { + // @see https://github.com/simple-rtmp-server/srs/issues/200 + if (nb_write < 0 && errno == ETIME) { + return ERROR_SOCKET_TIMEOUT; + } + + return ERROR_SOCKET_WRITE; + } + + send_bytes += nb_write; + + return ret; +} + +int SrsStSocket::writev(const iovec *iov, int iov_size, ssize_t* nwrite) +{ + int ret = ERROR_SUCCESS; + + ssize_t nb_write = st_writev(stfd, iov, iov_size, send_timeout); + if (nwrite) { + *nwrite = nb_write; + } + + // On success a non-negative integer equal to nbyte is returned. + // Otherwise, a value of -1 is returned and errno is set to indicate the error. + if (nb_write <= 0) { + // @see https://github.com/simple-rtmp-server/srs/issues/200 + if (nb_write < 0 && errno == ETIME) { + return ERROR_SOCKET_TIMEOUT; + } + + return ERROR_SOCKET_WRITE; + } + + send_bytes += nb_write; + + return ret; +} + #ifdef __linux__ #include diff --git a/trunk/src/app/srs_app_st.hpp b/trunk/src/app/srs_app_st.hpp index 37581e737..ef70cd08e 100644 --- a/trunk/src/app/srs_app_st.hpp +++ b/trunk/src/app/srs_app_st.hpp @@ -32,6 +32,45 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include +#include +#include + +/** + * the socket provides TCP socket over st, + * that is, the sync socket mechanism. + */ +class SrsStSocket : public ISrsProtocolReaderWriter +{ +private: + int64_t recv_timeout; + int64_t send_timeout; + int64_t recv_bytes; + int64_t send_bytes; + st_netfd_t stfd; +public: + SrsStSocket(st_netfd_t client_stfd); + virtual ~SrsStSocket(); +public: + virtual bool is_never_timeout(int64_t timeout_us); + virtual void set_recv_timeout(int64_t timeout_us); + virtual int64_t get_recv_timeout(); + virtual void set_send_timeout(int64_t timeout_us); + virtual int64_t get_send_timeout(); + virtual int64_t get_recv_bytes(); + virtual int64_t get_send_bytes(); +public: + /** + * @param nread, the actual read bytes, ignore if NULL. + */ + virtual int read(void* buf, size_t size, ssize_t* nread); + virtual int read_fully(void* buf, size_t size, ssize_t* nread); + /** + * @param nwrite, the actual write bytes, ignore if NULL. + */ + virtual int write(void* buf, size_t size, ssize_t* nwrite); + virtual int writev(const iovec *iov, int iov_size, ssize_t* nwrite); +}; + // initialize st, requires epoll. extern int srs_st_init(); diff --git a/trunk/src/app/srs_app_st_socket.cpp b/trunk/src/app/srs_app_st_socket.cpp deleted file mode 100644 index d4da0369c..000000000 --- a/trunk/src/app/srs_app_st_socket.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2013-2015 SRS(simple-rtmp-server) - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -#include - -#include - -SrsStSocket::SrsStSocket(st_netfd_t client_stfd) -{ - stfd = client_stfd; - send_timeout = recv_timeout = ST_UTIME_NO_TIMEOUT; - recv_bytes = send_bytes = 0; -} - -SrsStSocket::~SrsStSocket() -{ -} - -bool SrsStSocket::is_never_timeout(int64_t timeout_us) -{ - return timeout_us == (int64_t)ST_UTIME_NO_TIMEOUT; -} - -void SrsStSocket::set_recv_timeout(int64_t timeout_us) -{ - recv_timeout = timeout_us; -} - -int64_t SrsStSocket::get_recv_timeout() -{ - return recv_timeout; -} - -void SrsStSocket::set_send_timeout(int64_t timeout_us) -{ - send_timeout = timeout_us; -} - -int64_t SrsStSocket::get_send_timeout() -{ - return send_timeout; -} - -int64_t SrsStSocket::get_recv_bytes() -{ - return recv_bytes; -} - -int64_t SrsStSocket::get_send_bytes() -{ - return send_bytes; -} - -int SrsStSocket::read(void* buf, size_t size, ssize_t* nread) -{ - int ret = ERROR_SUCCESS; - - ssize_t nb_read = st_read(stfd, buf, size, recv_timeout); - if (nread) { - *nread = nb_read; - } - - // On success a non-negative integer indicating the number of bytes actually read is returned - // (a value of 0 means the network connection is closed or end of file is reached). - // Otherwise, a value of -1 is returned and errno is set to indicate the error. - if (nb_read <= 0) { - // @see https://github.com/simple-rtmp-server/srs/issues/200 - if (nb_read < 0 && errno == ETIME) { - return ERROR_SOCKET_TIMEOUT; - } - - if (nb_read == 0) { - errno = ECONNRESET; - } - - return ERROR_SOCKET_READ; - } - - recv_bytes += nb_read; - - return ret; -} - -int SrsStSocket::read_fully(void* buf, size_t size, ssize_t* nread) -{ - int ret = ERROR_SUCCESS; - - ssize_t nb_read = st_read_fully(stfd, buf, size, recv_timeout); - if (nread) { - *nread = nb_read; - } - - // On success a non-negative integer indicating the number of bytes actually read is returned - // (a value less than nbyte means the network connection is closed or end of file is reached) - // Otherwise, a value of -1 is returned and errno is set to indicate the error. - if (nb_read != (ssize_t)size) { - // @see https://github.com/simple-rtmp-server/srs/issues/200 - if (nb_read < 0 && errno == ETIME) { - return ERROR_SOCKET_TIMEOUT; - } - - if (nb_read >= 0) { - errno = ECONNRESET; - } - - return ERROR_SOCKET_READ_FULLY; - } - - recv_bytes += nb_read; - - return ret; -} - -int SrsStSocket::write(void* buf, size_t size, ssize_t* nwrite) -{ - int ret = ERROR_SUCCESS; - - ssize_t nb_write = st_write(stfd, buf, size, send_timeout); - if (nwrite) { - *nwrite = nb_write; - } - - // On success a non-negative integer equal to nbyte is returned. - // Otherwise, a value of -1 is returned and errno is set to indicate the error. - if (nb_write <= 0) { - // @see https://github.com/simple-rtmp-server/srs/issues/200 - if (nb_write < 0 && errno == ETIME) { - return ERROR_SOCKET_TIMEOUT; - } - - return ERROR_SOCKET_WRITE; - } - - send_bytes += nb_write; - - return ret; -} - -int SrsStSocket::writev(const iovec *iov, int iov_size, ssize_t* nwrite) -{ - int ret = ERROR_SUCCESS; - - ssize_t nb_write = st_writev(stfd, iov, iov_size, send_timeout); - if (nwrite) { - *nwrite = nb_write; - } - - // On success a non-negative integer equal to nbyte is returned. - // Otherwise, a value of -1 is returned and errno is set to indicate the error. - if (nb_write <= 0) { - // @see https://github.com/simple-rtmp-server/srs/issues/200 - if (nb_write < 0 && errno == ETIME) { - return ERROR_SOCKET_TIMEOUT; - } - - return ERROR_SOCKET_WRITE; - } - - send_bytes += nb_write; - - return ret; -} - - diff --git a/trunk/src/app/srs_app_st_socket.hpp b/trunk/src/app/srs_app_st_socket.hpp deleted file mode 100644 index 6e074fb0e..000000000 --- a/trunk/src/app/srs_app_st_socket.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2013-2015 SRS(simple-rtmp-server) - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -#ifndef SRS_APP_ST_SOCKET_HPP -#define SRS_APP_ST_SOCKET_HPP - -/* -#include -*/ - -#include - -#include -#include - -/** -* the socket provides TCP socket over st, -* that is, the sync socket mechanism. -*/ -class SrsStSocket : public ISrsProtocolReaderWriter -{ -private: - int64_t recv_timeout; - int64_t send_timeout; - int64_t recv_bytes; - int64_t send_bytes; - st_netfd_t stfd; -public: - SrsStSocket(st_netfd_t client_stfd); - virtual ~SrsStSocket(); -public: - virtual bool is_never_timeout(int64_t timeout_us); - virtual void set_recv_timeout(int64_t timeout_us); - virtual int64_t get_recv_timeout(); - virtual void set_send_timeout(int64_t timeout_us); - virtual int64_t get_send_timeout(); - virtual int64_t get_recv_bytes(); - virtual int64_t get_send_bytes(); -public: - /** - * @param nread, the actual read bytes, ignore if NULL. - */ - virtual int read(void* buf, size_t size, ssize_t* nread); - virtual int read_fully(void* buf, size_t size, ssize_t* nread); - /** - * @param nwrite, the actual write bytes, ignore if NULL. - */ - virtual int write(void* buf, size_t size, ssize_t* nwrite); - virtual int writev(const iovec *iov, int iov_size, ssize_t* nwrite); -}; - -#endif diff --git a/trunk/src/main/srs_main_ingest_hls.cpp b/trunk/src/main/srs_main_ingest_hls.cpp index 0c283b0a6..5f7771140 100644 --- a/trunk/src/main/srs_main_ingest_hls.cpp +++ b/trunk/src/main/srs_main_ingest_hls.cpp @@ -42,7 +42,7 @@ using namespace std; #include #include #include -#include +#include #include #include #include