/** * Reads a packet from the socket. Prior to reading from the socket will * check for availability of the connection. */ PHP_METHOD(Phalcon_Queue_Beanstalk, read) { zephir_fcall_cache_entry *_1 = NULL; zval *length_param = NULL, *connection = NULL, *data = NULL, _4, _5, _0$$5 = zval_used_for_init, *_2$$5 = NULL, *_3$$5; int length, ZEPHIR_LAST_CALL_STATUS; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &length_param); if (!length_param) { length = 0; } else { length = zephir_get_intval(length_param); } ZEPHIR_OBS_VAR(connection); zephir_read_property_this(&connection, this_ptr, SL("_connection"), PH_NOISY_CC); if (Z_TYPE_P(connection) != IS_RESOURCE) { ZEPHIR_CALL_METHOD(&connection, this_ptr, "connect", NULL, 0); zephir_check_call_status(); if (Z_TYPE_P(connection) != IS_RESOURCE) { RETURN_MM_BOOL(0); } } if (length) { if (zephir_feof(connection TSRMLS_CC)) { RETURN_MM_BOOL(0); } ZEPHIR_SINIT_VAR(_0$$5); ZVAL_LONG(&_0$$5, (length + 2)); ZEPHIR_CALL_FUNCTION(&data, "stream_get_line", &_1, 386, connection, &_0$$5); zephir_check_call_status(); ZEPHIR_CALL_FUNCTION(&_2$$5, "stream_get_meta_data", NULL, 387, connection); zephir_check_call_status(); zephir_array_fetch_string(&_3$$5, _2$$5, SL("timed_out"), PH_NOISY | PH_READONLY, "phalcon/queue/beanstalk.zep", 373 TSRMLS_CC); if (zephir_is_true(_3$$5)) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_queue_beanstalk_exception_ce, "Connection timed out", "phalcon/queue/beanstalk.zep", 374); return; } ZEPHIR_SINIT_NVAR(_0$$5); ZVAL_STRING(&_0$$5, "\r\n", 0); zephir_fast_trim(return_value, data, &_0$$5, ZEPHIR_TRIM_RIGHT TSRMLS_CC); RETURN_MM(); } ZEPHIR_SINIT_VAR(_4); ZVAL_LONG(&_4, 16384); ZEPHIR_SINIT_VAR(_5); ZVAL_STRING(&_5, "\r\n", 0); ZEPHIR_RETURN_CALL_FUNCTION("stream_get_line", &_1, 386, connection, &_4, &_5); zephir_check_call_status(); RETURN_MM(); }
/** * Reads a packet from the socket. Prior to reading from the socket will * check for availability of the connection. */ PHP_METHOD(Phalcon_Queue_Beanstalk, read) { zephir_fcall_cache_entry *_2 = NULL; zval *length_param = NULL, *connection = NULL, *data = NULL, _0$$5 = zval_used_for_init, *_1$$5 = NULL, *_3$$5 = NULL, *_4$$5, _5$$8, _6$$8; int length, ZEPHIR_LAST_CALL_STATUS; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &length_param); if (!length_param) { length = 0; } else { length = zephir_get_intval(length_param); } ZEPHIR_OBS_VAR(connection); zephir_read_property_this(&connection, this_ptr, SL("_connection"), PH_NOISY_CC); if (Z_TYPE_P(connection) != IS_RESOURCE) { ZEPHIR_CALL_METHOD(&connection, this_ptr, "connect", NULL, 0); zephir_check_call_status(); if (Z_TYPE_P(connection) != IS_RESOURCE) { RETURN_MM_BOOL(0); } } if (length) { if (zephir_feof(connection TSRMLS_CC)) { RETURN_MM_BOOL(0); } ZEPHIR_SINIT_VAR(_0$$5); ZVAL_LONG(&_0$$5, (length + 2)); ZEPHIR_CALL_FUNCTION(&_1$$5, "stream_get_line", &_2, 413, connection, &_0$$5); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_0$$5); ZVAL_STRING(&_0$$5, "\r\n", 0); ZEPHIR_INIT_VAR(data); zephir_fast_trim(data, _1$$5, &_0$$5, ZEPHIR_TRIM_RIGHT TSRMLS_CC); ZEPHIR_CALL_FUNCTION(&_3$$5, "stream_get_meta_data", NULL, 414, connection); zephir_check_call_status(); zephir_array_fetch_string(&_4$$5, _3$$5, SL("timed_out"), PH_NOISY | PH_READONLY, "phalcon/queue/beanstalk.zep", 535 TSRMLS_CC); if (zephir_is_true(_4$$5)) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_queue_beanstalk_exception_ce, "Connection timed out", "phalcon/queue/beanstalk.zep", 536); return; } } else { ZEPHIR_SINIT_VAR(_5$$8); ZVAL_LONG(&_5$$8, 16384); ZEPHIR_SINIT_VAR(_6$$8); ZVAL_STRING(&_6$$8, "\r\n", 0); ZEPHIR_CALL_FUNCTION(&data, "stream_get_line", &_2, 413, connection, &_5$$8, &_6$$8); zephir_check_call_status(); } if (ZEPHIR_IS_STRING_IDENTICAL(data, "UNKNOWN_COMMAND")) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_queue_beanstalk_exception_ce, "UNKNOWN_COMMAND", "phalcon/queue/beanstalk.zep", 544); return; } if (ZEPHIR_IS_STRING_IDENTICAL(data, "JOB_TOO_BIG")) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_queue_beanstalk_exception_ce, "JOB_TOO_BIG", "phalcon/queue/beanstalk.zep", 548); return; } if (ZEPHIR_IS_STRING_IDENTICAL(data, "BAD_FORMAT")) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_queue_beanstalk_exception_ce, "BAD_FORMAT", "phalcon/queue/beanstalk.zep", 552); return; } if (ZEPHIR_IS_STRING_IDENTICAL(data, "OUT_OF_MEMORY")) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_queue_beanstalk_exception_ce, "OUT_OF_MEMORY", "phalcon/queue/beanstalk.zep", 556); return; } RETURN_CCTOR(data); }