swoole原始碼分析之Buffer的expend操作
阿新 • • 發佈:2018-12-13
swoole_buffer提供的expend操作用於為快取區擴容。
swoole_buffer->expand(int $new_size);
- $new_size 指定新的緩衝區尺寸,必須大於當前的尺寸
下面我們看下其實現過程。
static PHP_METHOD(swoole_buffer, expand) { long size = -1; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &size) == FAILURE) { RETURN_FALSE; } swString *buffer = swoole_get_object(getThis()); if (size <= buffer->size) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "new size must be more than %ld", buffer->size); RETURN_FALSE; } if (swString_extend(buffer, size) == SW_OK) { zend_update_property_long(swoole_buffer_class_entry_ptr, getThis(), ZEND_STRL("capacity"), size TSRMLS_CC); RETURN_TRUE; } else { RETURN_FALSE; } }