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;
 }