// //////////////////////////////////////////////////////////////////////////// EndPointIP &EndPointIP::SetAddress(const std::string &in_address) { AddressIP tmp_address(in_address); address_ = tmp_address; return(*this); }
// //////////////////////////////////////////////////////////////////////////// EndPointIP &EndPointIP::SetAddress(unsigned long in_address) { AddressIP tmp_address(in_address); address_ = tmp_address; return(*this); }
// //////////////////////////////////////////////////////////////////////////// EndPointIP &EndPointIP::SetAddress(const char *in_address) { AddressIP tmp_address(in_address); address_ = tmp_address; return(*this); }
void Bptree::search_section(Table_info table,Attribute attribute,bool left_open,std::string left,bool right_open,std::string right,Address* begin,Address* end) { uuid_t uu; int i; uuid_generate( uu ); printf("\n"); uuid_string_t strc; uuid_unparse_upper(uu,strc); Address begin_address(table.database,strc,0); disk.create_file(begin_address); get_root(table, attribute); Address header_address(table.database,filename,0); Address_byte first_address; Block header; buffer->read_data(header_address, &header); header.get_block_data(ADDRESS_SIZE*2, ADDRESS_SIZE, first_address.byte); Address now_address(table.database,filename,first_address.address); Bptree_node *now_node=new_node(); now_node->read_from(now_address); Key_type *left_key,*right_key; Block address_file_block; buffer->write_data(begin_address, &address_file_block); bool no_left=(left=="inf"); bool no_right=(right=="inf"); switch (attribute.type) { case SQL_INT:left_key=new Int_key;break; case SQL_FLOAT:left_key=new Float_key;break; case SQL_STRING:left_key=new String_key(attribute.size);break; } switch (attribute.type) { case SQL_INT:right_key=new Int_key;break; case SQL_FLOAT:right_key=new Float_key;break; case SQL_STRING:right_key=new String_key(attribute.size);break; } left_key->assign(left); right_key->assign(right); int now_int; if (!no_left) { search(table, attribute, left); if (left_open) { now_address=bigger_than_start_address; now_int=bigger_than_start_int; } else { now_address=not_smaller_than_start_address; now_int=not_smaller_than_start_int; } } else { now_int=0; } Address end_address; int end_int; if (!no_right) { search(table, attribute, right); if (right_open) { end_address=smaller_than_end_address; end_int=smaller_than_end_int; } else { end_address=not_bigger_than_end_address; end_int=not_bigger_than_end_int; } } else { end_address=Address(table.table_name,filename,0); end_int=0; } now_node->read_from(now_address); Address_byte temp_address; temp_address.address=begin_address.address_int(); bool new_flag=true; *begin=Address(table.database,strc,0); *end=*begin; while(true) { Address tmp_address(table.database,strc,temp_address.address); if (now_address.file_offset==end_address.file_offset && now_int==end_int) { *end=tmp_address; break; } Block block; if (!new_flag) { buffer->read_data(tmp_address,&block); } else { new_flag=false; } Address_byte to_write_address; to_write_address.address=now_node->link[now_int].address_int(); block.fill_block_data(tmp_address.block_offset, ADDRESS_SIZE, to_write_address.byte); buffer->write_data(tmp_address, &block); if (now_int+1==now_node->number) { now_address=now_node->link[now_node->max_count]; now_int=0; if (now_address.file_offset!=0) now_node->read_from(now_address); } else { now_int++; } temp_address.address+=ADDRESS_SIZE; if (temp_address.address % BLOCK_SIZE==0) { new_flag=true; } } delete now_node; delete right_key; delete left_key; }