private function _gen_authorize_ack() { $ack = new AuthorizeAckFrame(); $ack->status = 0; $ack->num_pipelet = 10; $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); }
/** * 通过meta获取认证信息 * @param string $pipe_name * @param string $token * @param const $role ( * @return authorization reuslt on success or fasle on failure */ public function authorize($pipe_name, $token, $role) { if (false === $this->_inited) { BigpipeLog::warning("[%s:%u][%s][call uninited object]", __FILE__, __LINE__, __FUNCTION__); return false; } if (empty($this->meta_name)) { // 缺少关键条件 BigpipeLog::warning("[%s:%u][%s][missing meta name]", __FILE__, __LINE__, __FUNCTION__); return false; } // pack reqestion $cmd = new AuthorizeFrame(); $cmd->meta_name = $this->meta_name; $cmd->pipe_name = $pipe_name; $cmd->role = $role; $cmd->token = $token; // send $res_body = $this->_request($cmd); if (null === $res_body) { BigpipeLog::warning("[%s:%u][%s][fail to autorize][meta:%s][pipe_name:%s][token:%d]", __FILE__, __LINE__, __FUNCTION__, $this->meta_name, $pipe_name, $token); return false; } // parse ack $ack = new AuthorizeAckFrame(); if (!$ack->load($res_body)) { BigpipeLog::warning("[%s:%u][%s][ack error]", __FILE__, __LINE__, __FUNCTION__); return false; } // 返回认证状态 $author_result = array(); if (BigpipeErrorCode::OK == $ack->status) { $author_result['authorized'] = true; $author_result['num_pipelet'] = $ack->num_pipelet; } else { // 认证不通过 $author_result['authorized'] = false; $author_result['reason'] = $ack->error_message; } return $author_result; }