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