private function _gen_get_pubinfo_ack()
 {
     $ack = new GetPubInfoAckFrame();
     $ack->status = 0;
     $ack->broker_ip = '1.1.1.1';
     $ack->broker_port = 1;
     $ack->stripe_name = 'stripe';
     $ack->store();
     $data = $ack->buffer();
     $ret_arr = $this->_gen_init_meta_ack();
     $ret_arr['good'] = $data;
     return $ret_arr;
 }
 /**
  * 从meta中获取可发布的broker
  * @param string $pipe_name : pipe name
  * @param number $pipelet_id: pipelet id
  * @return 成功返回broker array('ip'=>, 'port'=>, 'stripe'=>),失败返回boolean false
  */
 public function get_pub_broker($pipe_name, $pipelet_id)
 {
     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 GetPubInfoFrame();
     $cmd->meta_name = $this->meta_name;
     $cmd->pipe_name = $pipe_name;
     $cmd->pipelet_id = $pipelet_id + 1;
     // 用于组成pipelet name
     // send
     $res_body = $this->_request($cmd);
     if (null === $res_body) {
         BigpipeLog::warning("[%s:%u][%s][fail to get pub info][meta:%s][pipe_name:%s][pipelet_id:%d]", __FILE__, __LINE__, __FUNCTION__, $this->meta_name, $pipe_name, $pipelet_id);
         return false;
     }
     // parse ack
     $ack = new GetPubInfoAckFrame();
     if (!$ack->load($res_body)) {
         BigpipeLog::warning("[%s:%u][%s][error ack]", __FILE__, __LINE__, __FUNCTION__);
         return false;
     }
     $broker = array('ip' => $ack->broker_ip, 'port' => $ack->broker_port, 'stripe' => $ack->stripe_name);
     return $broker;
 }