Skip to content

Commit

Permalink
add onClose and onError callback check.
Browse files Browse the repository at this point in the history
  • Loading branch information
matyhtf committed Mar 10, 2017
1 parent bcdd219 commit 2076a76
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 9 deletions.
3 changes: 2 additions & 1 deletion php_swoole.h
Expand Up @@ -46,7 +46,7 @@
#include "Client.h"
#include "async.h"

#define PHP_SWOOLE_VERSION "1.9.6"
#define PHP_SWOOLE_VERSION "1.9.7-alpha"
#define PHP_SWOOLE_CHECK_CALLBACK

/**
Expand Down Expand Up @@ -373,6 +373,7 @@ swClient* php_swoole_client_new(zval *object, char *host, int host_len, int port
void php_swoole_client_check_setting(swClient *cli, zval *zset TSRMLS_DC);
zval* php_swoole_websocket_unpack(swString *data TSRMLS_DC);
void php_swoole_sha1(const char *str, int _len, unsigned char *digest);
int php_swoole_client_isset_callback(zval *zobject, int type TSRMLS_DC);

int php_swoole_task_pack(swEventData *task, zval *data TSRMLS_DC);
zval* php_swoole_task_unpack(swEventData *task_result TSRMLS_DC);
Expand Down
26 changes: 25 additions & 1 deletion swoole_client.c
Expand Up @@ -100,7 +100,7 @@ static sw_inline void client_execute_callback(zval *zobject, enum php_swoole_cli
zval *retval = NULL;
zval **args[1];

client_callback *cb = swoole_get_property(zobject, 0);
client_callback *cb = swoole_get_property(zobject, client_property_callback);
char *callback_name;

switch(type)
Expand Down Expand Up @@ -440,6 +440,30 @@ static void client_check_ssl_setting(swClient *cli, zval *zset TSRMLS_DC)
}
#endif

int php_swoole_client_isset_callback(zval *zobject, int type TSRMLS_DC)
{
client_callback *cb = swoole_get_property(zobject, client_property_callback);
switch (type)
{
case SW_CLIENT_CB_onConnect:
return cb->onConnect != NULL;
case SW_CLIENT_CB_onError:
return cb->onError != NULL;
case SW_CLIENT_CB_onClose:
return cb->onClose != NULL;
case SW_CLIENT_CB_onBufferFull:
return cb->onBufferFull != NULL;
case SW_CLIENT_CB_onBufferEmpty:
return cb->onBufferEmpty != NULL;
#ifdef SW_USE_OPENSSL
case SW_CLIENT_CB_onSSLReady:
return cb->onSSLReady != NULL;
#endif
default:
return SW_FALSE;
}
}

void php_swoole_client_check_setting(swClient *cli, zval *zset TSRMLS_DC)
{
HashTable *vht;
Expand Down
20 changes: 13 additions & 7 deletions swoole_http_v2_client.c
Expand Up @@ -782,10 +782,16 @@ static void http2_client_connect(zval *zobject TSRMLS_DC)
zval *zport = sw_zend_read_property(swoole_http2_client_class_entry_ptr, zobject, ZEND_STRL("port"), 1 TSRMLS_CC);

http2_client_set_callback(zobject, "Connect", "onConnect" TSRMLS_CC);
http2_client_set_callback(zobject, "Close", "onClose" TSRMLS_CC);
http2_client_set_callback(zobject, "Receive", "onReceive" TSRMLS_CC);
http2_client_set_callback(zobject, "Error", "onError" TSRMLS_CC);

if (!php_swoole_client_isset_callback(zobject, SW_CLIENT_CB_onClose))
{
http2_client_set_callback(zobject, "Close", "onClose" TSRMLS_CC);
}
if (!php_swoole_client_isset_callback(zobject, SW_CLIENT_CB_onError))
{
http2_client_set_callback(zobject, "Error", "onError" TSRMLS_CC);
}
sw_zend_call_method_with_2_params(&zobject, swoole_client_class_entry_ptr, NULL, "connect", &retval, zhost, zport);
if (retval)
{
Expand Down Expand Up @@ -991,6 +997,11 @@ static PHP_METHOD(swoole_http2_client, onError)

}

static PHP_METHOD(swoole_http2_client, onClose)
{

}

static PHP_METHOD(swoole_http2_client, onReceive)
{
zval *zobject;
Expand All @@ -1004,11 +1015,6 @@ static PHP_METHOD(swoole_http2_client, onReceive)
http2_client_onFrame(zobject, zdata TSRMLS_CC);
}

static PHP_METHOD(swoole_http2_client, onClose)
{

}

static PHP_METHOD(swoole_http2_client, __destruct)
{
http2_client_property *hcc = swoole_get_property(getThis(), HTTP2_CLIENT_PROPERTY_INDEX);
Expand Down

0 comments on commit 2076a76

Please sign in to comment.