refine tcp client connect, extract to utility srs_socket_connect. 0.9.141
正在显示
7 个修改的文件
包含
99 行增加
和
173 行删除
@@ -45,6 +45,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -45,6 +45,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
45 | #include <srs_app_kbps.hpp> | 45 | #include <srs_app_kbps.hpp> |
46 | #include <srs_kernel_utility.hpp> | 46 | #include <srs_kernel_utility.hpp> |
47 | #include <srs_protocol_msg_array.hpp> | 47 | #include <srs_protocol_msg_array.hpp> |
48 | +#include <srs_app_utility.hpp> | ||
48 | 49 | ||
49 | // when error, edge ingester sleep for a while and retry. | 50 | // when error, edge ingester sleep for a while and retry. |
50 | #define SRS_EDGE_INGESTER_SLEEP_US (int64_t)(1*1000*1000LL) | 51 | #define SRS_EDGE_INGESTER_SLEEP_US (int64_t)(1*1000*1000LL) |
@@ -292,50 +293,23 @@ int SrsEdgeIngester::connect_server() | @@ -292,50 +293,23 @@ int SrsEdgeIngester::connect_server() | ||
292 | server = server.substr(0, pos); | 293 | server = server.substr(0, pos); |
293 | port = ::atoi(s_port.c_str()); | 294 | port = ::atoi(s_port.c_str()); |
294 | } | 295 | } |
295 | - | ||
296 | - // open socket. | ||
297 | - // TODO: FIXME: extract utility method | ||
298 | - int sock = socket(AF_INET, SOCK_STREAM, 0); | ||
299 | - if(sock == -1){ | ||
300 | - ret = ERROR_SOCKET_CREATE; | ||
301 | - srs_error("create socket error. ret=%d", ret); | ||
302 | - return ret; | ||
303 | - } | ||
304 | 296 | ||
305 | - srs_assert(!stfd); | ||
306 | - stfd = st_netfd_open_socket(sock); | ||
307 | - if(stfd == NULL){ | ||
308 | - ret = ERROR_ST_OPEN_SOCKET; | ||
309 | - srs_error("st_netfd_open_socket failed. ret=%d", ret); | 297 | + // open socket. |
298 | + int64_t timeout = SRS_EDGE_INGESTER_TIMEOUT_US; | ||
299 | + if ((ret = srs_socket_connect(server, port, timeout, &stfd)) != ERROR_SUCCESS) { | ||
300 | + srs_warn("edge ingester failed, stream=%s, tcUrl=%s to server=%s, port=%d, timeout=%"PRId64", ret=%d", | ||
301 | + _req->stream.c_str(), _req->tcUrl.c_str(), server.c_str(), port, timeout, ret); | ||
310 | return ret; | 302 | return ret; |
311 | } | 303 | } |
312 | 304 | ||
313 | srs_freep(client); | 305 | srs_freep(client); |
314 | srs_freep(io); | 306 | srs_freep(io); |
315 | 307 | ||
308 | + srs_assert(stfd); | ||
316 | io = new SrsSocket(stfd); | 309 | io = new SrsSocket(stfd); |
317 | client = new SrsRtmpClient(io); | 310 | client = new SrsRtmpClient(io); |
318 | - kbps->set_io(io, io); | ||
319 | - | ||
320 | - // connect to server. | ||
321 | - std::string ip = srs_dns_resolve(server); | ||
322 | - if (ip.empty()) { | ||
323 | - ret = ERROR_SYSTEM_IP_INVALID; | ||
324 | - srs_error("dns resolve server error, ip empty. ret=%d", ret); | ||
325 | - return ret; | ||
326 | - } | ||
327 | 311 | ||
328 | - sockaddr_in addr; | ||
329 | - addr.sin_family = AF_INET; | ||
330 | - addr.sin_port = htons(port); | ||
331 | - addr.sin_addr.s_addr = inet_addr(ip.c_str()); | ||
332 | - | ||
333 | - if (st_connect(stfd, (const struct sockaddr*)&addr, sizeof(sockaddr_in), SRS_EDGE_INGESTER_TIMEOUT_US) == -1){ | ||
334 | - ret = ERROR_ST_CONNECT; | ||
335 | - srs_error("connect to server error. ip=%s, port=%d, ret=%d", ip.c_str(), port, ret); | ||
336 | - return ret; | ||
337 | - } | ||
338 | - srs_info("connect to server success. server=%s, ip=%s, port=%d", server.c_str(), ip.c_str(), port); | 312 | + kbps->set_io(io, io); |
339 | 313 | ||
340 | srs_trace("edge connected, can_publish=%d, url=%s/%s, server=%s:%d", | 314 | srs_trace("edge connected, can_publish=%d, url=%s/%s, server=%s:%d", |
341 | _source->can_publish(), _req->tcUrl.c_str(), _req->stream.c_str(), server.c_str(), port); | 315 | _source->can_publish(), _req->tcUrl.c_str(), _req->stream.c_str(), server.c_str(), port); |
@@ -576,51 +550,16 @@ int SrsEdgeForwarder::connect_server() | @@ -576,51 +550,16 @@ int SrsEdgeForwarder::connect_server() | ||
576 | } | 550 | } |
577 | 551 | ||
578 | // open socket. | 552 | // open socket. |
579 | - srs_trace("connect edge stream=%s, tcUrl=%s to server=%s, port=%d", | ||
580 | - _req->stream.c_str(), _req->tcUrl.c_str(), server.c_str(), port); | ||
581 | - | ||
582 | - // TODO: FIXME: extract utility method | ||
583 | - int sock = socket(AF_INET, SOCK_STREAM, 0); | ||
584 | - if(sock == -1){ | ||
585 | - ret = ERROR_SOCKET_CREATE; | ||
586 | - srs_error("create socket error. ret=%d", ret); | 553 | + int64_t timeout = SRS_EDGE_FORWARDER_TIMEOUT_US; |
554 | + if ((ret = srs_socket_connect(server, port, timeout, &stfd)) != ERROR_SUCCESS) { | ||
555 | + srs_warn("edge forwarder failed, stream=%s, tcUrl=%s to server=%s, port=%d, timeout=%"PRId64", ret=%d", | ||
556 | + _req->stream.c_str(), _req->tcUrl.c_str(), server.c_str(), port, timeout, ret); | ||
587 | return ret; | 557 | return ret; |
588 | } | 558 | } |
589 | 559 | ||
590 | - srs_assert(!stfd); | ||
591 | - stfd = st_netfd_open_socket(sock); | ||
592 | - if(stfd == NULL){ | ||
593 | - ret = ERROR_ST_OPEN_SOCKET; | ||
594 | - srs_error("st_netfd_open_socket failed. ret=%d", ret); | ||
595 | - return ret; | ||
596 | - } | ||
597 | - | ||
598 | - srs_freep(client); | ||
599 | - srs_freep(io); | ||
600 | - | ||
601 | - io = new SrsSocket(stfd); | ||
602 | - client = new SrsRtmpClient(io); | ||
603 | - kbps->set_io(io, io); | ||
604 | - | ||
605 | - // connect to server. | ||
606 | - std::string ip = srs_dns_resolve(server); | ||
607 | - if (ip.empty()) { | ||
608 | - ret = ERROR_SYSTEM_IP_INVALID; | ||
609 | - srs_error("dns resolve server error, ip empty. ret=%d", ret); | ||
610 | - return ret; | ||
611 | - } | ||
612 | - | ||
613 | - sockaddr_in addr; | ||
614 | - addr.sin_family = AF_INET; | ||
615 | - addr.sin_port = htons(port); | ||
616 | - addr.sin_addr.s_addr = inet_addr(ip.c_str()); | ||
617 | - | ||
618 | - if (st_connect(stfd, (const struct sockaddr*)&addr, sizeof(sockaddr_in), SRS_EDGE_FORWARDER_TIMEOUT_US) == -1){ | ||
619 | - ret = ERROR_ST_CONNECT; | ||
620 | - srs_error("connect to server error. ip=%s, port=%d, ret=%d", ip.c_str(), port, ret); | ||
621 | - return ret; | ||
622 | - } | ||
623 | - srs_trace("connect to server success. server=%s, ip=%s, port=%d", server.c_str(), ip.c_str(), port); | 560 | + // open socket. |
561 | + srs_trace("connect edge stream=%s, tcUrl=%s to server=%s, port=%d", | ||
562 | + _req->stream.c_str(), _req->tcUrl.c_str(), server.c_str(), port); | ||
624 | 563 | ||
625 | return ret; | 564 | return ret; |
626 | } | 565 | } |
@@ -42,6 +42,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -42,6 +42,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
42 | #include <srs_app_kbps.hpp> | 42 | #include <srs_app_kbps.hpp> |
43 | #include <srs_kernel_utility.hpp> | 43 | #include <srs_kernel_utility.hpp> |
44 | #include <srs_protocol_msg_array.hpp> | 44 | #include <srs_protocol_msg_array.hpp> |
45 | +#include <srs_app_utility.hpp> | ||
45 | 46 | ||
46 | // when error, forwarder sleep for a while and retry. | 47 | // when error, forwarder sleep for a while and retry. |
47 | #define SRS_FORWARDER_SLEEP_US (int64_t)(3*1000*1000LL) | 48 | #define SRS_FORWARDER_SLEEP_US (int64_t)(3*1000*1000LL) |
@@ -255,50 +256,24 @@ int SrsForwarder::connect_server() | @@ -255,50 +256,24 @@ int SrsForwarder::connect_server() | ||
255 | close_underlayer_socket(); | 256 | close_underlayer_socket(); |
256 | 257 | ||
257 | // open socket. | 258 | // open socket. |
258 | - srs_trace("forward stream=%s, tcUrl=%s to server=%s, port=%d", | ||
259 | - stream_name.c_str(), tc_url.c_str(), server.c_str(), port); | ||
260 | - | ||
261 | - int sock = socket(AF_INET, SOCK_STREAM, 0); | ||
262 | - if(sock == -1){ | ||
263 | - ret = ERROR_SOCKET_CREATE; | ||
264 | - srs_error("create socket error. ret=%d", ret); | ||
265 | - return ret; | ||
266 | - } | ||
267 | - | ||
268 | - srs_assert(!stfd); | ||
269 | - stfd = st_netfd_open_socket(sock); | ||
270 | - if(stfd == NULL){ | ||
271 | - ret = ERROR_ST_OPEN_SOCKET; | ||
272 | - srs_error("st_netfd_open_socket failed. ret=%d", ret); | 259 | + int64_t timeout = SRS_FORWARDER_SLEEP_US; |
260 | + if ((ret = srs_socket_connect(server, port, timeout, &stfd)) != ERROR_SUCCESS) { | ||
261 | + srs_warn("forward failed, stream=%s, tcUrl=%s to server=%s, port=%d, timeout=%"PRId64", ret=%d", | ||
262 | + stream_name.c_str(), tc_url.c_str(), server.c_str(), port, timeout, ret); | ||
273 | return ret; | 263 | return ret; |
274 | } | 264 | } |
275 | 265 | ||
276 | srs_freep(client); | 266 | srs_freep(client); |
277 | srs_freep(io); | 267 | srs_freep(io); |
278 | 268 | ||
269 | + srs_assert(stfd); | ||
279 | io = new SrsSocket(stfd); | 270 | io = new SrsSocket(stfd); |
280 | client = new SrsRtmpClient(io); | 271 | client = new SrsRtmpClient(io); |
281 | - kbps->set_io(io, io); | ||
282 | 272 | ||
283 | - // connect to server. | ||
284 | - std::string ip = srs_dns_resolve(server); | ||
285 | - if (ip.empty()) { | ||
286 | - ret = ERROR_SYSTEM_IP_INVALID; | ||
287 | - srs_error("dns resolve server error, ip empty. ret=%d", ret); | ||
288 | - return ret; | ||
289 | - } | ||
290 | - | ||
291 | - sockaddr_in addr; | ||
292 | - addr.sin_family = AF_INET; | ||
293 | - addr.sin_port = htons(port); | ||
294 | - addr.sin_addr.s_addr = inet_addr(ip.c_str()); | 273 | + kbps->set_io(io, io); |
295 | 274 | ||
296 | - if (st_connect(stfd, (const struct sockaddr*)&addr, sizeof(sockaddr_in), SRS_FORWARDER_SLEEP_US) == -1){ | ||
297 | - ret = ERROR_ST_CONNECT; | ||
298 | - srs_error("connect to server error. ip=%s, port=%d, ret=%d", ip.c_str(), port, ret); | ||
299 | - return ret; | ||
300 | - } | ||
301 | - srs_trace("connect to server success. server=%s, ip=%s, port=%d", server.c_str(), ip.c_str(), port); | 275 | + srs_trace("forward connected, stream=%s, tcUrl=%s to server=%s, port=%d", |
276 | + stream_name.c_str(), tc_url.c_str(), server.c_str(), port); | ||
302 | 277 | ||
303 | return ret; | 278 | return ret; |
304 | } | 279 | } |
@@ -34,6 +34,10 @@ using namespace std; | @@ -34,6 +34,10 @@ using namespace std; | ||
34 | #include <srs_kernel_log.hpp> | 34 | #include <srs_kernel_log.hpp> |
35 | #include <srs_app_socket.hpp> | 35 | #include <srs_app_socket.hpp> |
36 | #include <srs_kernel_utility.hpp> | 36 | #include <srs_kernel_utility.hpp> |
37 | +#include <srs_app_utility.hpp> | ||
38 | + | ||
39 | +// when error, http client sleep for a while and retry. | ||
40 | +#define SRS_HTTP_CLIENT_SLEEP_US (int64_t)(3*1000*1000LL) | ||
37 | 41 | ||
38 | SrsHttpClient::SrsHttpClient() | 42 | SrsHttpClient::SrsHttpClient() |
39 | { | 43 | { |
@@ -127,36 +131,14 @@ int SrsHttpClient::connect(SrsHttpUri* uri) | @@ -127,36 +131,14 @@ int SrsHttpClient::connect(SrsHttpUri* uri) | ||
127 | 131 | ||
128 | disconnect(); | 132 | disconnect(); |
129 | 133 | ||
130 | - std::string ip = srs_dns_resolve(uri->get_host()); | ||
131 | - if (ip.empty()) { | ||
132 | - ret = ERROR_SYSTEM_IP_INVALID; | ||
133 | - srs_error("dns resolve server error, ip empty. ret=%d", ret); | ||
134 | - return ret; | ||
135 | - } | ||
136 | - | ||
137 | - int sock = socket(AF_INET, SOCK_STREAM, 0); | ||
138 | - if(sock == -1){ | ||
139 | - ret = ERROR_SOCKET_CREATE; | ||
140 | - srs_error("create socket error. ret=%d", ret); | ||
141 | - return ret; | ||
142 | - } | ||
143 | - | ||
144 | - stfd = st_netfd_open_socket(sock); | ||
145 | - if(stfd == NULL){ | ||
146 | - ret = ERROR_ST_OPEN_SOCKET; | ||
147 | - srs_error("st_netfd_open_socket failed. ret=%d", ret); | ||
148 | - return ret; | ||
149 | - } | ||
150 | - | ||
151 | - sockaddr_in addr; | ||
152 | - addr.sin_family = AF_INET; | ||
153 | - addr.sin_port = htons(uri->get_port()); | ||
154 | - addr.sin_addr.s_addr = inet_addr(ip.c_str()); | 134 | + std::string server = uri->get_host(); |
135 | + int port = uri->get_port(); | ||
155 | 136 | ||
156 | - if (st_connect(stfd, (const struct sockaddr*)&addr, sizeof(sockaddr_in), ST_UTIME_NO_TIMEOUT) == -1){ | ||
157 | - ret = ERROR_ST_CONNECT; | ||
158 | - srs_error("connect to server error. " | ||
159 | - "ip=%s, port=%d, ret=%d", ip.c_str(), uri->get_port(), ret); | 137 | + // open socket. |
138 | + int64_t timeout = SRS_HTTP_CLIENT_SLEEP_US; | ||
139 | + if ((ret = srs_socket_connect(server, port, timeout, &stfd)) != ERROR_SUCCESS) { | ||
140 | + srs_warn("http client failed, server=%s, port=%d, timeout=%"PRId64", ret=%d", | ||
141 | + server.c_str(), port, timeout, ret); | ||
160 | return ret; | 142 | return ret; |
161 | } | 143 | } |
162 | srs_info("connect to server success. " | 144 | srs_info("connect to server success. " |
@@ -52,6 +52,7 @@ using namespace std; | @@ -52,6 +52,7 @@ using namespace std; | ||
52 | #include <srs_kernel_utility.hpp> | 52 | #include <srs_kernel_utility.hpp> |
53 | #include <srs_protocol_msg_array.hpp> | 53 | #include <srs_protocol_msg_array.hpp> |
54 | #include <srs_protocol_amf0.hpp> | 54 | #include <srs_protocol_amf0.hpp> |
55 | +#include <srs_app_utility.hpp> | ||
55 | 56 | ||
56 | // when stream is busy, for example, streaming is already | 57 | // when stream is busy, for example, streaming is already |
57 | // publishing, when a new client to request to publish, | 58 | // publishing, when a new client to request to publish, |
@@ -921,7 +922,6 @@ int SrsRtmpConn::check_edge_token_traverse_auth() | @@ -921,7 +922,6 @@ int SrsRtmpConn::check_edge_token_traverse_auth() | ||
921 | return ret; | 922 | return ret; |
922 | } | 923 | } |
923 | 924 | ||
924 | -// TODO: FIXME: refine the connect server serials functions. | ||
925 | int SrsRtmpConn::connect_server(int origin_index, st_netfd_t* pstsock) | 925 | int SrsRtmpConn::connect_server(int origin_index, st_netfd_t* pstsock) |
926 | { | 926 | { |
927 | int ret = ERROR_SUCCESS; | 927 | int ret = ERROR_SUCCESS; |
@@ -942,39 +942,12 @@ int SrsRtmpConn::connect_server(int origin_index, st_netfd_t* pstsock) | @@ -942,39 +942,12 @@ int SrsRtmpConn::connect_server(int origin_index, st_netfd_t* pstsock) | ||
942 | port = ::atoi(s_port.c_str()); | 942 | port = ::atoi(s_port.c_str()); |
943 | } | 943 | } |
944 | 944 | ||
945 | - // connect to server. | ||
946 | - std::string ip = srs_dns_resolve(server); | ||
947 | - if (ip.empty()) { | ||
948 | - ret = ERROR_SYSTEM_IP_INVALID; | ||
949 | - srs_error("dns resolve server error, ip empty. ret=%d", ret); | ||
950 | - return ret; | ||
951 | - } | ||
952 | - | ||
953 | // open socket. | 945 | // open socket. |
954 | - // TODO: FIXME: extract utility method | ||
955 | - int sock = socket(AF_INET, SOCK_STREAM, 0); | ||
956 | - if(sock == -1){ | ||
957 | - ret = ERROR_SOCKET_CREATE; | ||
958 | - srs_error("create socket error. ret=%d", ret); | ||
959 | - return ret; | ||
960 | - } | ||
961 | - | ||
962 | - st_netfd_t stsock = st_netfd_open_socket(sock); | ||
963 | - if(stsock == NULL){ | ||
964 | - ret = ERROR_ST_OPEN_SOCKET; | ||
965 | - srs_error("st_netfd_open_socket failed. ret=%d", ret); | ||
966 | - return ret; | ||
967 | - } | ||
968 | - | ||
969 | - sockaddr_in addr; | ||
970 | - addr.sin_family = AF_INET; | ||
971 | - addr.sin_port = htons(port); | ||
972 | - addr.sin_addr.s_addr = inet_addr(ip.c_str()); | ||
973 | - | ||
974 | - if (st_connect(stsock, (const struct sockaddr*)&addr, sizeof(sockaddr_in), SRS_EDGE_TOKEN_TRAVERSE_TIMEOUT_US) == -1){ | ||
975 | - ret = ERROR_ST_CONNECT; | ||
976 | - srs_close_stfd(stsock); | ||
977 | - srs_error("connect to server error. ip=%s, port=%d, ret=%d", ip.c_str(), port, ret); | 946 | + st_netfd_t stsock = NULL; |
947 | + int64_t timeout = SRS_EDGE_TOKEN_TRAVERSE_TIMEOUT_US; | ||
948 | + if ((ret = srs_socket_connect(server, port, timeout, &stsock)) != ERROR_SUCCESS) { | ||
949 | + srs_warn("edge token traverse failed, tcUrl=%s to server=%s, port=%d, timeout=%"PRId64", ret=%d", | ||
950 | + req->tcUrl.c_str(), server.c_str(), port, timeout, ret); | ||
978 | return ret; | 951 | return ret; |
979 | } | 952 | } |
980 | srs_info("edge token auth connected, url=%s/%s, server=%s:%d", req->tcUrl.c_str(), req->stream.c_str(), server.c_str(), port); | 953 | srs_info("edge token auth connected, url=%s/%s, server=%s:%d", req->tcUrl.c_str(), req->stream.c_str(), server.c_str(), port); |
@@ -39,6 +39,58 @@ using namespace std; | @@ -39,6 +39,58 @@ using namespace std; | ||
39 | 39 | ||
40 | #define SRS_LOCAL_LOOP_IP "127.0.0.1" | 40 | #define SRS_LOCAL_LOOP_IP "127.0.0.1" |
41 | 41 | ||
42 | +int srs_socket_connect(std::string server, int port, int64_t timeout, st_netfd_t* pstfd) | ||
43 | +{ | ||
44 | + int ret = ERROR_SUCCESS; | ||
45 | + | ||
46 | + *pstfd = NULL; | ||
47 | + st_netfd_t stfd = NULL; | ||
48 | + sockaddr_in addr; | ||
49 | + | ||
50 | + int sock = socket(AF_INET, SOCK_STREAM, 0); | ||
51 | + if(sock == -1){ | ||
52 | + ret = ERROR_SOCKET_CREATE; | ||
53 | + srs_error("create socket error. ret=%d", ret); | ||
54 | + return ret; | ||
55 | + } | ||
56 | + | ||
57 | + srs_assert(!stfd); | ||
58 | + stfd = st_netfd_open_socket(sock); | ||
59 | + if(stfd == NULL){ | ||
60 | + ret = ERROR_ST_OPEN_SOCKET; | ||
61 | + srs_error("st_netfd_open_socket failed. ret=%d", ret); | ||
62 | + return ret; | ||
63 | + } | ||
64 | + | ||
65 | + // connect to server. | ||
66 | + std::string ip = srs_dns_resolve(server); | ||
67 | + if (ip.empty()) { | ||
68 | + ret = ERROR_SYSTEM_IP_INVALID; | ||
69 | + srs_error("dns resolve server error, ip empty. ret=%d", ret); | ||
70 | + goto failed; | ||
71 | + } | ||
72 | + | ||
73 | + addr.sin_family = AF_INET; | ||
74 | + addr.sin_port = htons(port); | ||
75 | + addr.sin_addr.s_addr = inet_addr(ip.c_str()); | ||
76 | + | ||
77 | + if (st_connect(stfd, (const struct sockaddr*)&addr, sizeof(sockaddr_in), timeout) == -1){ | ||
78 | + ret = ERROR_ST_CONNECT; | ||
79 | + srs_error("connect to server error. ip=%s, port=%d, ret=%d", ip.c_str(), port, ret); | ||
80 | + goto failed; | ||
81 | + } | ||
82 | + srs_info("connect ok. server=%s, ip=%s, port=%d", server.c_str(), ip.c_str(), port); | ||
83 | + | ||
84 | + *pstfd = stfd; | ||
85 | + return ret; | ||
86 | + | ||
87 | +failed: | ||
88 | + if (stfd) { | ||
89 | + srs_close_stfd(stfd); | ||
90 | + } | ||
91 | + return ret; | ||
92 | +} | ||
93 | + | ||
42 | int srs_get_log_level(std::string level) | 94 | int srs_get_log_level(std::string level) |
43 | { | 95 | { |
44 | if ("verbose" == _srs_config->get_log_level()) { | 96 | if ("verbose" == _srs_config->get_log_level()) { |
@@ -36,8 +36,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -36,8 +36,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
36 | 36 | ||
37 | #include <sys/resource.h> | 37 | #include <sys/resource.h> |
38 | 38 | ||
39 | +#include <srs_app_st.hpp> | ||
40 | + | ||
39 | class SrsKbps; | 41 | class SrsKbps; |
40 | 42 | ||
43 | +// client open socket and connect to server. | ||
44 | +extern int srs_socket_connect(std::string server, int port, int64_t timeout, st_netfd_t* pstfd); | ||
45 | + | ||
41 | /** | 46 | /** |
42 | * convert level in string to log level in int. | 47 | * convert level in string to log level in int. |
43 | * @return the log level defined in SrsLogLevel. | 48 | * @return the log level defined in SrsLogLevel. |
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
31 | // current release version | 31 | // current release version |
32 | #define VERSION_MAJOR "0" | 32 | #define VERSION_MAJOR "0" |
33 | #define VERSION_MINOR "9" | 33 | #define VERSION_MINOR "9" |
34 | -#define VERSION_REVISION "140" | 34 | +#define VERSION_REVISION "141" |
35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION | 35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION |
36 | // server info. | 36 | // server info. |
37 | #define RTMP_SIG_SRS_KEY "SRS" | 37 | #define RTMP_SIG_SRS_KEY "SRS" |
-
请 注册 或 登录 后发表评论