private function _gen_init_api_ack() { $ack = new InitApiAckFrame(); $ack->status = 0; $ack->num_pipelet = 10; $ack->meta_name = 'meta'; $ack->store(); $passed = $ack->buffer(); $ack->status = 10; $ack->error_message = 'failed'; $ack->store(); $failed = $ack->buffer(); $bad_ack = new UninitMetaAckFrame(); $bad_ack->status = 0; $bad_ack->store(); $bad = $bad_ack->buffer(); return array('passed' => $passed, 'failed' => $failed, 'bad' => $bad); }
/** * 发送InitApiFrame * @param $conf : array of meta parameters * @return authorize result on success or false on failure */ private function _init_api($pipe_name, $token, $role, $meta_params) { // create init_api_command $cmd = new InitApiFrame(); // 根据array构建的meta参数初始化frame if (!$cmd->pack($meta_params)) { $this->last_error_message = "_init_meta error"; return false; } // 填充认证部分参数 $cmd->pipe_name = $pipe_name; $cmd->token = $token; $cmd->role = $role; // send $res_body = $this->_request($cmd); if (null === $res_body) { $this->last_error_message = "_init_meta no ack"; return false; } // parse ack $ack = new InitApiAckFrame(); if (!$ack->load($res_body)) { $this->last_error_message = '_init_meta error ack'; return false; } // 填充并返回init结果 $init_result = array(); if (BigpipeErrorCode::OK == $ack->status) { $init_result['authorized'] = true; $init_result['num_pipelet'] = $ack->num_pipelet; $init_result['session'] = $ack->session; $init_result['session_id'] = $ack->session_id; $init_result['session_timestamp'] = $ack->session_timestamp; } else { // 认证不通过 $init_result['authorized'] = false; $init_result['reason'] = $ack->error_message; } $this->meta_name = $ack->meta_name; // 成功则得到meta name return $init_result; }