31
31
using namespace swoole ;
32
32
using swoole::coroutine::Socket;
33
33
34
+ namespace Http2 = swoole::http2;
35
+
34
36
static zend_class_entry *swoole_http2_client_coro_ce;
35
37
static zend_object_handlers swoole_http2_client_coro_handlers;
36
38
@@ -43,7 +45,9 @@ static zend_object_handlers swoole_http2_request_handlers;
43
45
static zend_class_entry *swoole_http2_response_ce;
44
46
static zend_object_handlers swoole_http2_response_handlers;
45
47
46
- namespace swoole { namespace coroutine { namespace http2 {
48
+ namespace swoole {
49
+ namespace coroutine {
50
+ namespace http2 {
47
51
48
52
struct Stream {
49
53
uint32_t stream_id;
@@ -76,8 +80,8 @@ class Client {
76
80
uint32_t stream_id = 0 ; // the next send stream id
77
81
uint32_t last_stream_id = 0 ; // the last received stream id
78
82
79
- swHttp2_settings local_settings = {};
80
- swHttp2_settings remote_settings = {};
83
+ Http2::Settings local_settings = {};
84
+ Http2::Settings remote_settings = {};
81
85
82
86
std::unordered_map<uint32_t , Stream *> streams;
83
87
@@ -91,7 +95,7 @@ class Client {
91
95
open_ssl = _ssl;
92
96
_zobject = *__zobject;
93
97
zobject = &_zobject;
94
- swHttp2_init_settings (&local_settings);
98
+ Http2::init_settings (&local_settings);
95
99
}
96
100
97
101
inline Stream *get_stream (uint32_t stream_id) {
@@ -188,7 +192,9 @@ class Client {
188
192
}
189
193
};
190
194
191
- }}}
195
+ } // namespace http2
196
+ } // namespace coroutine
197
+ } // namespace swoole
192
198
193
199
using swoole::coroutine::http2::Client;
194
200
using swoole::coroutine::http2::Stream;
@@ -417,7 +423,7 @@ bool Client::connect() {
417
423
client->protocol .package_length_size = SW_HTTP2_FRAME_HEADER_SIZE;
418
424
client->protocol .package_length_offset = 0 ;
419
425
client->protocol .package_body_offset = 0 ;
420
- client->protocol .get_package_length = swHttp2_get_frame_length ;
426
+ client->protocol .get_package_length = Http2::get_frame_length ;
421
427
422
428
apply_setting (
423
429
sw_zend_read_property_ex (swoole_http2_client_coro_ce, zobject, SW_ZSTR_KNOWN (SW_ZEND_STR_SETTING), 0 ));
@@ -430,7 +436,7 @@ bool Client::connect() {
430
436
431
437
stream_id = 1 ;
432
438
// [init]: we must set default value, server is not always send all the settings
433
- swHttp2_init_settings (&remote_settings);
439
+ Http2::init_settings (&remote_settings);
434
440
435
441
int ret = nghttp2_hd_inflate_new2 (&inflater, php_nghttp2_mem ());
436
442
if (ret != 0 ) {
@@ -493,7 +499,7 @@ enum swReturn_code Client::parse_frame(zval *return_value, bool pipeline_read) {
493
499
uint8_t type = buf[3 ];
494
500
uint8_t flags = buf[4 ];
495
501
uint32_t stream_id = ntohl ((*(int *) (buf + 5 ))) & 0x7fffffff ;
496
- ssize_t length = swHttp2_get_length (buf);
502
+ ssize_t length = Http2::get_length (buf);
497
503
buf += SW_HTTP2_FRAME_HEADER_SIZE;
498
504
499
505
char frame[SW_HTTP2_FRAME_HEADER_SIZE + SW_HTTP2_FRAME_PING_PAYLOAD_SIZE];
@@ -563,7 +569,7 @@ enum swReturn_code Client::parse_frame(zval *return_value, bool pipeline_read) {
563
569
length -= sizeof (id) + sizeof (value);
564
570
}
565
571
566
- swHttp2_set_frame_header (frame, SW_HTTP2_TYPE_SETTINGS, 0 , SW_HTTP2_FLAG_ACK, stream_id);
572
+ Http2::set_frame_header (frame, SW_HTTP2_TYPE_SETTINGS, 0 , SW_HTTP2_FLAG_ACK, stream_id);
567
573
if (!send (frame, SW_HTTP2_FRAME_HEADER_SIZE)) {
568
574
return SW_ERROR;
569
575
}
@@ -585,7 +591,7 @@ enum swReturn_code Client::parse_frame(zval *return_value, bool pipeline_read) {
585
591
case SW_HTTP2_TYPE_PING: {
586
592
swHttp2FrameTraceLog (recv, " ping" );
587
593
if (!(flags & SW_HTTP2_FLAG_ACK)) {
588
- swHttp2_set_frame_header (
594
+ Http2::set_frame_header (
589
595
frame, SW_HTTP2_TYPE_PING, SW_HTTP2_FRAME_PING_PAYLOAD_SIZE, SW_HTTP2_FLAG_ACK, stream_id);
590
596
memcpy (
591
597
frame + SW_HTTP2_FRAME_HEADER_SIZE, buf + SW_HTTP2_FRAME_HEADER_SIZE, SW_HTTP2_FRAME_PING_PAYLOAD_SIZE);
@@ -838,18 +844,18 @@ bool Client::send_window_update(int stream_id, uint32_t size) {
838
844
char frame[SW_HTTP2_FRAME_HEADER_SIZE + SW_HTTP2_WINDOW_UPDATE_SIZE];
839
845
swTraceLog (SW_TRACE_HTTP2, " [" SW_ECHO_YELLOW " ] stream_id=%d, size=%d" , " WINDOW_UPDATE" , stream_id, size);
840
846
*(uint32_t *) ((char *) frame + SW_HTTP2_FRAME_HEADER_SIZE) = htonl (size);
841
- swHttp2_set_frame_header (frame, SW_HTTP2_TYPE_WINDOW_UPDATE, SW_HTTP2_WINDOW_UPDATE_SIZE, 0 , stream_id);
847
+ Http2::set_frame_header (frame, SW_HTTP2_TYPE_WINDOW_UPDATE, SW_HTTP2_WINDOW_UPDATE_SIZE, 0 , stream_id);
842
848
return send (frame, SW_HTTP2_FRAME_HEADER_SIZE + SW_HTTP2_WINDOW_UPDATE_SIZE);
843
849
}
844
850
845
851
bool Client::send_setting () {
846
- swHttp2_settings *settings = &local_settings;
852
+ Http2::Settings *settings = &local_settings;
847
853
uint16_t id = 0 ;
848
854
uint32_t value = 0 ;
849
855
850
856
char frame[SW_HTTP2_FRAME_HEADER_SIZE + 18 ];
851
857
memset (frame, 0 , sizeof (frame));
852
- swHttp2_set_frame_header (frame, SW_HTTP2_TYPE_SETTINGS, 18 , 0 , 0 );
858
+ Http2::set_frame_header (frame, SW_HTTP2_TYPE_SETTINGS, 18 , 0 , 0 );
853
859
854
860
char *p = frame + SW_HTTP2_FRAME_HEADER_SIZE;
855
861
/* *
@@ -880,7 +886,7 @@ bool Client::send_setting() {
880
886
memcpy (p, &value, sizeof (value));
881
887
p += 4 ;
882
888
883
- swTraceLog (SW_TRACE_HTTP2, " [" SW_ECHO_GREEN " ]\t [length=%d]" , swHttp2_get_type (SW_HTTP2_TYPE_SETTINGS), 18 );
889
+ swTraceLog (SW_TRACE_HTTP2, " [" SW_ECHO_GREEN " ]\t [length=%d]" , Http2::get_type (SW_HTTP2_TYPE_SETTINGS), 18 );
884
890
return send (frame, SW_HTTP2_FRAME_HEADER_SIZE + 18 );
885
891
}
886
892
@@ -1110,7 +1116,7 @@ Stream *Client::create_stream(uint32_t stream_id, uint8_t flags) {
1110
1116
1111
1117
bool Client::send_ping_frame () {
1112
1118
char frame[SW_HTTP2_FRAME_HEADER_SIZE + SW_HTTP2_FRAME_PING_PAYLOAD_SIZE];
1113
- swHttp2_set_frame_header (frame, SW_HTTP2_TYPE_PING, SW_HTTP2_FRAME_PING_PAYLOAD_SIZE, SW_HTTP2_FLAG_NONE, 0 );
1119
+ Http2::set_frame_header (frame, SW_HTTP2_TYPE_PING, SW_HTTP2_FRAME_PING_PAYLOAD_SIZE, SW_HTTP2_FLAG_NONE, 0 );
1114
1120
return send (frame, SW_HTTP2_FRAME_HEADER_SIZE + SW_HTTP2_FRAME_PING_PAYLOAD_SIZE);
1115
1121
}
1116
1122
@@ -1126,7 +1132,7 @@ bool Client::send_data(uint32_t stream_id, const char *p, size_t len, int flag)
1126
1132
send_len = len;
1127
1133
send_flag = flag;
1128
1134
}
1129
- swHttp2_set_frame_header (header, SW_HTTP2_TYPE_DATA, send_len, send_flag, stream_id);
1135
+ Http2::set_frame_header (header, SW_HTTP2_TYPE_DATA, send_len, send_flag, stream_id);
1130
1136
if (!send (header, SW_HTTP2_FRAME_HEADER_SIZE)) {
1131
1137
return false ;
1132
1138
}
@@ -1180,11 +1186,11 @@ uint32_t Client::send_request(zval *zrequest) {
1180
1186
flags |= SW_HTTP2_FLAG_END_STREAM;
1181
1187
}
1182
1188
1183
- swHttp2_set_frame_header (buffer, SW_HTTP2_TYPE_HEADERS, bytes, flags, stream->stream_id );
1189
+ Http2::set_frame_header (buffer, SW_HTTP2_TYPE_HEADERS, bytes, flags, stream->stream_id );
1184
1190
1185
1191
swTraceLog (SW_TRACE_HTTP2,
1186
1192
" [" SW_ECHO_GREEN " , STREAM#%d] length=%zd" ,
1187
- swHttp2_get_type (SW_HTTP2_TYPE_HEADERS),
1193
+ Http2::get_type (SW_HTTP2_TYPE_HEADERS),
1188
1194
stream->stream_id ,
1189
1195
bytes);
1190
1196
if (!send (buffer, SW_HTTP2_FRAME_HEADER_SIZE + bytes)) {
@@ -1215,7 +1221,7 @@ uint32_t Client::send_request(zval *zrequest) {
1215
1221
1216
1222
swTraceLog (SW_TRACE_HTTP2,
1217
1223
" [" SW_ECHO_GREEN " , END, STREAM#%d] length=%zu" ,
1218
- swHttp2_get_type (SW_HTTP2_TYPE_DATA),
1224
+ Http2::get_type (SW_HTTP2_TYPE_DATA),
1219
1225
stream->stream_id ,
1220
1226
len);
1221
1227
@@ -1253,10 +1259,10 @@ bool Client::write_data(uint32_t stream_id, zval *zdata, bool end) {
1253
1259
php_swoole_error (E_WARNING, " http_build_query failed" );
1254
1260
return false ;
1255
1261
}
1256
- swHttp2_set_frame_header (buffer, SW_HTTP2_TYPE_DATA, len, flag, stream_id);
1262
+ Http2::set_frame_header (buffer, SW_HTTP2_TYPE_DATA, len, flag, stream_id);
1257
1263
swTraceLog (SW_TRACE_HTTP2,
1258
1264
" [" SW_ECHO_GREEN " ,%s STREAM#%d] length=%zu" ,
1259
- swHttp2_get_type (SW_HTTP2_TYPE_DATA),
1265
+ Http2::get_type (SW_HTTP2_TYPE_DATA),
1260
1266
end ? " END," : " " ,
1261
1267
stream_id,
1262
1268
len);
@@ -1267,10 +1273,10 @@ bool Client::write_data(uint32_t stream_id, zval *zdata, bool end) {
1267
1273
smart_str_free (&formstr_s);
1268
1274
} else {
1269
1275
zend::String data (zdata);
1270
- swHttp2_set_frame_header (buffer, SW_HTTP2_TYPE_DATA, data.len (), flag, stream_id);
1276
+ Http2::set_frame_header (buffer, SW_HTTP2_TYPE_DATA, data.len (), flag, stream_id);
1271
1277
swTraceLog (SW_TRACE_HTTP2,
1272
1278
" [" SW_ECHO_GREEN " ,%s STREAM#%d] length=%zu" ,
1273
- swHttp2_get_type (SW_HTTP2_TYPE_DATA),
1279
+ Http2::get_type (SW_HTTP2_TYPE_DATA),
1274
1280
end ? " END," : " " ,
1275
1281
stream_id,
1276
1282
data.len ());
@@ -1290,15 +1296,15 @@ bool Client::send_goaway_frame(zend_long error_code, const char *debug_data, siz
1290
1296
size_t length = SW_HTTP2_FRAME_HEADER_SIZE + SW_HTTP2_GOAWAY_SIZE + debug_data_len;
1291
1297
char *frame = (char *) ecalloc (1 , length);
1292
1298
bool ret;
1293
- swHttp2_set_frame_header (frame, SW_HTTP2_TYPE_GOAWAY, SW_HTTP2_GOAWAY_SIZE + debug_data_len, error_code, 0 );
1299
+ Http2::set_frame_header (frame, SW_HTTP2_TYPE_GOAWAY, SW_HTTP2_GOAWAY_SIZE + debug_data_len, error_code, 0 );
1294
1300
*(uint32_t *) (frame + SW_HTTP2_FRAME_HEADER_SIZE) = htonl (last_stream_id);
1295
1301
*(uint32_t *) (frame + SW_HTTP2_FRAME_HEADER_SIZE + 4 ) = htonl (error_code);
1296
1302
if (debug_data_len > 0 ) {
1297
1303
memcpy (frame + SW_HTTP2_FRAME_HEADER_SIZE + SW_HTTP2_GOAWAY_SIZE, debug_data, debug_data_len);
1298
1304
}
1299
1305
swTraceLog (SW_TRACE_HTTP2,
1300
1306
" [" SW_ECHO_GREEN " ] Send: last-sid=%u, error-code=%ld" ,
1301
- swHttp2_get_type (SW_HTTP2_TYPE_GOAWAY),
1307
+ Http2::get_type (SW_HTTP2_TYPE_GOAWAY),
1302
1308
last_stream_id,
1303
1309
error_code);
1304
1310
ret = send (frame, length);
@@ -1371,7 +1377,7 @@ static PHP_METHOD(swoole_http2_client_coro, connect) {
1371
1377
RETURN_BOOL (h2c->connect ());
1372
1378
}
1373
1379
1374
- static sw_inline void http2_settings_to_array (swHttp2_settings *settings, zval *zarray) {
1380
+ static sw_inline void http2_settings_to_array (Http2::Settings *settings, zval *zarray) {
1375
1381
array_init (zarray);
1376
1382
add_assoc_long_ex (zarray, ZEND_STRL (" header_table_size" ), settings->header_table_size );
1377
1383
add_assoc_long_ex (zarray, ZEND_STRL (" window_size" ), settings->window_size );
0 commit comments