private function _gen_get_subinfo_ack() { $pathname = './sub_info.json'; if (false === file_exists($pathname)) { // missing example file return false; } $content = file_get_contents($pathname); $ack = new GetSubInfoAckFrame(); $ack->status = 0; $ack->stripe_name = 'stripe'; $ack->stripe_id = 1; $ack->begin_pos = 1; $ack->end_pos = 9527; $ack->broker_group = $content; $ack->store(); $data = $ack->buffer(); $ret_arr = $this->_gen_init_meta_ack(); $ret_arr['good'] = $data; return $ret_arr; }
/** * 从meta中获取可订阅的broker group * @return sub_info on success or false on failure */ public function get_sub_broker_group($pipe_name, $pipelet_id, $start_point) { 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 GetSubInfoFrame(); $cmd->meta_name = $this->meta_name; $cmd->pipe_name = $pipe_name; $cmd->pipelet_id = $pipelet_id + 1; // 用于组成pipelet name $cmd->start_point = $start_point; // send $res_body = $this->_request($cmd); if (null === $res_body) { BigpipeLog::warning("[%s:%u][%s][fail to get sub info][meta:%s][pipe_name:%s][pipelet_id:%d][start_point:%d]", __FILE__, __LINE__, __FUNCTION__, $this->meta_name, $pipe_name, $pipelet_id, $start_point); return false; } // parse ack $ack = new GetSubInfoAckFrame(); if (!$ack->load($res_body)) { BigpipeLog::warning("[%s:%u][%s][error ack]", __FILE__, __LINE__, __FUNCTION__); return false; } $broker_group = json_decode($ack->broker_group); $sub_info = array('stripe_name' => $ack->stripe_name, 'stripe_id' => $ack->stripe_id, 'begin_pos' => $ack->begin_pos, 'end_pos' => $ack->end_pos, 'broker_group' => $broker_group); return $sub_info; }