Skip to content

Commit 77ce45d

Browse files
committed
Fix tests, optimize code
1 parent c52d7c5 commit 77ce45d

File tree

3 files changed

+31
-33
lines changed

3 files changed

+31
-33
lines changed

.github/workflows/framework.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
vendor/bin/phpunit --display-deprecations --fail-on-deprecation
5050
5151
- name: Hyperf Tests
52-
if: matrix.framework == 'Hyperf' && matrix.php-version != '8.3'
52+
if: matrix.framework == 'Hyperf' && matrix.php-version != '8.4'
5353
env:
5454
SW_VERSION: 'master'
5555
MYSQL_VERSION: '5.7'

ext-src/swoole_socket_coro.cc

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,15 @@ static const zend_function_entry swoole_socket_coro_methods[] =
146146
}
147147

148148
static sw_inline SocketObject *socket_coro_fetch_object(zend_object *obj) {
149-
return (SocketObject *) ((char *) obj - swoole_socket_coro_handlers.offset);
149+
return reinterpret_cast<SocketObject *>(reinterpret_cast<char *>(obj) - swoole_socket_coro_handlers.offset);
150150
}
151151

152152
/**
153153
* cannot execute close in the destructor, it may be shutting down,
154154
* executing close will try to resume other coroutines.
155155
*/
156156
static void socket_coro_free_object(zend_object *object) {
157-
SocketObject *sock = (SocketObject *) socket_coro_fetch_object(object);
157+
auto *sock = socket_coro_fetch_object(object);
158158
if (!sock->reference && sock->socket) {
159159
if (!Z_ISUNDEF(sock->zstream)) {
160160
sock->socket->move_fd();
@@ -166,7 +166,7 @@ static void socket_coro_free_object(zend_object *object) {
166166
}
167167

168168
static zend_object *socket_coro_create_object(zend_class_entry *ce) {
169-
SocketObject *sock = (SocketObject *) zend_object_alloc(sizeof(SocketObject), ce);
169+
auto *sock = static_cast<SocketObject *>(zend_object_alloc(sizeof(SocketObject), ce));
170170
zend_object_std_init(&sock->std, ce);
171171
/* Even if you don't use properties yourself you should still call object_properties_init(),
172172
* because extending classes may use properties. (Generally a lot of the stuff you will do is
@@ -772,8 +772,8 @@ SW_API bool php_swoole_export_socket(zval *zobject, Socket *_socket) {
772772
return false;
773773
}
774774

775-
SocketObject *sock = (SocketObject *) socket_coro_fetch_object(object);
776-
sock->reference = 1;
775+
auto *sock = socket_coro_fetch_object(object);
776+
sock->reference = true;
777777
sock->socket = _socket;
778778

779779
ZVAL_OBJ(zobject, object);
@@ -794,7 +794,7 @@ SW_API zend_object *php_swoole_dup_socket(int fd, swSocketType type) {
794794
SW_API zend_object *php_swoole_create_socket(swSocketType type) {
795795
zval zobject;
796796
zend_object *object = socket_coro_create_object(swoole_socket_coro_ce);
797-
SocketObject *sock = (SocketObject *) socket_coro_fetch_object(object);
797+
auto *sock = socket_coro_fetch_object(object);
798798

799799
sock->socket = new Socket(type);
800800
if (UNEXPECTED(sock->socket->get_fd() < 0)) {
@@ -826,8 +826,8 @@ SW_API void php_swoole_socket_set_error_properties(zval *zobject, Socket *socket
826826

827827
static zend_object *create_socket_object(Socket *socket) {
828828
zval zobject;
829-
zend_object *object = socket_coro_create_object(swoole_socket_coro_ce);
830-
SocketObject *sock = (SocketObject *) socket_coro_fetch_object(object);
829+
auto *object = socket_coro_create_object(swoole_socket_coro_ce);
830+
auto *sock = socket_coro_fetch_object(object);
831831

832832
sock->socket = socket;
833833
if (UNEXPECTED(sock->socket->get_fd() < 0)) {
@@ -853,18 +853,18 @@ SW_API zend_object *php_swoole_create_socket_from_fd(int fd, int _domain, int _t
853853

854854
SW_API Socket *php_swoole_get_socket(zval *zobject) {
855855
SW_ASSERT(Z_OBJCE_P(zobject) == swoole_socket_coro_ce);
856-
SocketObject *sock = (SocketObject *) socket_coro_fetch_object(Z_OBJ_P(zobject));
856+
auto *sock = socket_coro_fetch_object(Z_OBJ_P(zobject));
857857
return sock->socket;
858858
}
859859

860860
SW_API bool php_swoole_socket_is_closed(zval *zobject) {
861-
SocketObject *_sock = socket_coro_fetch_object(Z_OBJ_P(zobject));
861+
auto *_sock = socket_coro_fetch_object(Z_OBJ_P(zobject));
862862
return _sock->socket == nullptr || _sock->socket->is_closed();
863863
}
864864

865865
SW_API void php_swoole_init_socket_object(zval *zobject, Socket *socket) {
866-
zend_object *object = socket_coro_create_object(swoole_socket_coro_ce);
867-
SocketObject *sock = (SocketObject *) socket_coro_fetch_object(object);
866+
auto *object = socket_coro_create_object(swoole_socket_coro_ce);
867+
auto *sock = socket_coro_fetch_object(object);
868868
sock->socket = socket;
869869
ZVAL_OBJ(zobject, object);
870870
socket_coro_init(zobject, sock);
@@ -901,7 +901,7 @@ SW_API bool php_swoole_socket_set_protocol(Socket *sock, zval *zset) {
901901
if (php_swoole_array_get_value(vht, "open_eof_split", ztmp)) {
902902
sock->protocol.split_by_eof = zval_is_true(ztmp);
903903
if (sock->protocol.split_by_eof) {
904-
sock->open_eof_check = 1;
904+
sock->open_eof_check = true;
905905
}
906906
}
907907
// package eof
@@ -927,7 +927,7 @@ SW_API bool php_swoole_socket_set_protocol(Socket *sock, zval *zset) {
927927
sock->protocol.package_body_offset = 0;
928928
sock->protocol.get_package_length =
929929
[](const Protocol *protocol, swoole::network::Socket *conn, PacketLength *pl) {
930-
const uint8_t *p = (const uint8_t *) pl->buf;
930+
const auto *p = reinterpret_cast<const uint8_t *>(pl->buf);
931931
ssize_t length = 0;
932932
if (pl->buf_size >= FCGI_HEADER_LEN) {
933933
length = ((p[4] << 8) | p[5]) + p[6];
@@ -1234,9 +1234,9 @@ static PHP_METHOD(swoole_socket_coro, __construct) {
12341234
Z_PARAM_LONG(protocol)
12351235
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
12361236

1237-
SocketObject *sock = (SocketObject *) socket_coro_fetch_object(Z_OBJ_P(ZEND_THIS));
1237+
auto *sock = socket_coro_fetch_object(Z_OBJ_P(ZEND_THIS));
12381238
if (sock->socket) {
1239-
zend_throw_error(NULL, "Constructor of %s can only be called once", SW_Z_OBJCE_NAME_VAL_P(ZEND_THIS));
1239+
zend_throw_error(nullptr, "Constructor of %s can only be called once", SW_Z_OBJCE_NAME_VAL_P(ZEND_THIS));
12401240
RETURN_FALSE;
12411241
}
12421242

@@ -1302,13 +1302,13 @@ static PHP_METHOD(swoole_socket_coro, accept) {
13021302
Socket *conn = sock->socket->accept(timeout);
13031303
if (conn) {
13041304
zend_object *client = socket_coro_create_object(swoole_socket_coro_ce);
1305-
SocketObject *client_sock = (SocketObject *) socket_coro_fetch_object(client);
1305+
auto *client_sock = socket_coro_fetch_object(client);
13061306
client_sock->socket = conn;
13071307
ZVAL_OBJ(return_value, &client_sock->std);
13081308
socket_coro_init(return_value, client_sock);
13091309
// It must be copied once to avoid destroying the function when the connection closes.
13101310
if (sock->socket->protocol.private_data_1) {
1311-
zend::Callable *cb = (zend::Callable *) sock->socket->protocol.private_data_1;
1311+
auto *cb = static_cast<zend::Callable *>(sock->socket->protocol.private_data_1);
13121312
conn->protocol.private_data_1 = cb->dup();
13131313
}
13141314
} else {
@@ -1381,7 +1381,7 @@ static PHP_METHOD(swoole_socket_coro, peek) {
13811381

13821382
swoole_get_socket_coro(sock, ZEND_THIS);
13831383

1384-
zend_string *buf = zend_string_alloc(length, 0);
1384+
zend_string *buf = zend_string_alloc(length, false);
13851385
ssize_t bytes = sock->socket->peek(ZSTR_VAL(buf), length);
13861386
socket_coro_sync_properties(ZEND_THIS, sock);
13871387
if (UNEXPECTED(bytes < 0)) {
@@ -1418,7 +1418,7 @@ static inline void socket_coro_recv(INTERNAL_FUNCTION_PARAMETERS, RecvMode type)
14181418

14191419
swoole_get_socket_coro(sock, ZEND_THIS);
14201420

1421-
zend_string *buf = zend_string_alloc(length, 0);
1421+
zend_string *buf = zend_string_alloc(length, false);
14221422
Socket::TimeoutSetter ts(sock->socket, timeout, SW_TIMEOUT_READ);
14231423
ssize_t bytes = -1;
14241424
switch (type) {
@@ -1523,7 +1523,6 @@ static PHP_METHOD(swoole_socket_coro, send) {
15231523
static void socket_coro_write_vector(INTERNAL_FUNCTION_PARAMETERS, const bool all) {
15241524
zval *ziov = nullptr;
15251525
zval *zelement = nullptr;
1526-
HashTable *vht;
15271526
double timeout = 0;
15281527
int iovcnt = 0;
15291528
int iov_index = 0;
@@ -1540,7 +1539,7 @@ static void socket_coro_write_vector(INTERNAL_FUNCTION_PARAMETERS, const bool al
15401539
socket_coro_sync_properties(ZEND_THIS, sock);
15411540
};
15421541

1543-
vht = Z_ARRVAL_P(ziov);
1542+
HashTable *vht = Z_ARRVAL_P(ziov);
15441543
iovcnt = zend_array_count(vht);
15451544

15461545
if (iovcnt > IOV_MAX) {
@@ -1592,7 +1591,6 @@ static PHP_METHOD(swoole_socket_coro, writeVectorAll) {
15921591
static void socket_coro_read_vector(INTERNAL_FUNCTION_PARAMETERS, const bool all) {
15931592
zval *ziov = nullptr;
15941593
zval *zelement = nullptr;
1595-
HashTable *vht;
15961594
double timeout = 0;
15971595
int iovcnt = 0;
15981596
int iov_index = 0;
@@ -1610,7 +1608,7 @@ static void socket_coro_read_vector(INTERNAL_FUNCTION_PARAMETERS, const bool all
16101608
socket_coro_sync_properties(ZEND_THIS, sock);
16111609
};
16121610

1613-
vht = Z_ARRVAL_P(ziov);
1611+
HashTable *vht = Z_ARRVAL_P(ziov);
16141612
iovcnt = zend_array_count(vht);
16151613

16161614
if (iovcnt > IOV_MAX) {
@@ -1637,7 +1635,7 @@ static void socket_coro_read_vector(INTERNAL_FUNCTION_PARAMETERS, const bool all
16371635
}
16381636
size_t iov_len = Z_LVAL_P(zelement);
16391637

1640-
iov[iov_index].iov_base = zend_string_alloc(iov_len, 0)->val;
1638+
iov[iov_index].iov_base = zend_string_alloc(iov_len, false)->val;
16411639
iov[iov_index].iov_len = iov_len;
16421640
iov_index++;
16431641
total_length += iov_len;
@@ -1740,7 +1738,7 @@ static PHP_METHOD(swoole_socket_coro, recvfrom) {
17401738

17411739
swoole_get_socket_coro(sock, ZEND_THIS);
17421740

1743-
zend_string *buf = zend_string_alloc(SW_BUFFER_SIZE_BIG, 0);
1741+
zend_string *buf = zend_string_alloc(SW_BUFFER_SIZE_BIG, false);
17441742
Socket::TimeoutSetter ts(sock->socket, timeout, SW_TIMEOUT_READ);
17451743
ssize_t bytes = sock->socket->recvfrom(ZSTR_VAL(buf), SW_BUFFER_SIZE_BIG);
17461744
socket_coro_sync_properties(ZEND_THIS, sock);
@@ -1814,9 +1812,9 @@ static PHP_METHOD(swoole_socket_coro, close) {
18141812
sock->socket->protocol.private_data_1 = nullptr;
18151813
}
18161814
if (!Z_ISUNDEF(sock->zstream)) {
1817-
php_stream *stream = NULL;
1815+
php_stream *stream = nullptr;
18181816
php_stream_from_zval_no_verify(stream, &sock->zstream);
1819-
if (stream != NULL) {
1817+
if (stream != nullptr) {
18201818
/* close & destroy stream, incl. removing it from the rsrc list;
18211819
* resource stored in php_sock->zstream will become invalid */
18221820
php_stream_free(stream,
@@ -1878,7 +1876,7 @@ static PHP_METHOD(swoole_socket_coro, getOption) {
18781876
struct in_addr if_addr;
18791877
unsigned int if_index;
18801878
optlen = sizeof(if_addr);
1881-
if (_socket->get_option(level, optname, (char *) &if_addr, &optlen) != 0) {
1879+
if (_socket->get_option(level, optname, &if_addr, &optlen) != 0) {
18821880
php_swoole_sys_error(E_WARNING,
18831881
"getsockopt(%d, " ZEND_LONG_FMT ", " ZEND_LONG_FMT ")",
18841882
sock->socket->get_fd(),
@@ -2040,8 +2038,8 @@ static PHP_METHOD(swoole_socket_coro, setOption) {
20402038

20412039
case SO_RCVTIMEO:
20422040
case SO_SNDTIMEO: {
2043-
const char sec_key[] = "sec";
2044-
const char usec_key[] = "usec";
2041+
constexpr char sec_key[] = "sec";
2042+
constexpr char usec_key[] = "usec";
20452043

20462044
convert_to_array_ex(arg4);
20472045
opt_ht = Z_ARRVAL_P(arg4);

src/coroutine/socket.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,13 +349,13 @@ Socket::Socket(SocketType _type) {
349349
}
350350

351351
Socket::Socket(int _fd, SocketType _type) {
352+
init_sock_type(_type);
352353
if (sw_unlikely(!init_reactor_socket(_fd))) {
353354
return;
354355
}
355356
if (_type == SW_SOCK_RAW) {
356357
return;
357358
}
358-
init_sock_type(_type);
359359
socket->set_nonblock();
360360
init_options();
361361
}

0 commit comments

Comments
 (0)