//处理批量添加边的函数,边都属于一个图 //加边的同时,如果成功,要添加边的属性索引,边的属性索引是针对整个图的,而不是子图 void handler_add_edges(Replier &rep){ string graph_name=rep.get_graph_name(); list<Edge_u> &edges=rep.get_edges(); list<Edge_u>::iterator it=edges.begin(); Subgraph *sub; uint32_t num=0; while(it!=edges.end()){ sub=graph_set->get_subgraph(graph_name,(*it).s_id);//得到该图该顶点所在的子图,子图不存在,则会创建一个 Edge e(*it); int res=sub->add_edge((*it).s_id,e); if(res==0||res==1||res==-1) { if(res==0){ //添加边属性的索引 Graph *graph=graph_set->get_graph(graph_name); Key k((*it).blog_id); Value v((*it).s_id,(*it).d_id); //graph->add_edge_index(k,v); graph_set->get_graph(graph_name)->edge_num_increment(); num++;//添加成功,记录一笔 } edges.erase(it); it=edges.begin(); } else{ it++; if(it==edges.end()){ it=edges.begin(); } } } ostringstream stream_num; stream_num<<num; string string_num=stream_num.str(); rep.ans(STATUS_OK,string_num.c_str(),string_num.size()+1); }