static int mysql_request(swString *sql, swString *buffer) { bzero(buffer->str, 5); //length mysql_pack_length(sql->length + 1, buffer->str); //command buffer->str[4] = SW_MYSQL_COM_QUERY; buffer->length = 5; return swString_append(buffer, sql); }
static PHP_METHOD(swoole_buffer, append) { swString str; bzero(&str, sizeof(str)); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str.str, &str.length) == FAILURE) { RETURN_FALSE; } if (str.length < 1) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "string empty."); RETURN_FALSE; } swString *buffer = swoole_get_object(getThis()); if ((str.length + buffer->size) > SW_STRING_BUFFER_MAXLEN) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "buffer size must not exceed %d", SW_STRING_BUFFER_MAXLEN); RETURN_FALSE; } size_t size_old = buffer->size; if (swString_append(buffer, &str) == SW_OK) { if (buffer->size > size_old) { zend_update_property_long(swoole_buffer_class_entry_ptr, getThis(), ZEND_STRL("capacity"), buffer->size TSRMLS_CC); } zend_update_property_long(swoole_buffer_class_entry_ptr, getThis(), ZEND_STRL("length"), buffer->length TSRMLS_CC); RETURN_LONG(buffer->length); } else { RETURN_FALSE; } }