Skip to content

Commit

Permalink
now it compiles
Browse files Browse the repository at this point in the history
  • Loading branch information
wangyu- committed Jul 25, 2018
1 parent 9c1a8c8 commit 4610358
Show file tree
Hide file tree
Showing 6 changed files with 394 additions and 276 deletions.
15 changes: 0 additions & 15 deletions common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -833,21 +833,6 @@ int create_new_udp(int &new_udp_fd,int remote_address_uint32,int remote_port)
}
return 0;
}*/
void ip_port_t::from_u64(u64_t u64)
{
ip=get_u64_h(u64);
port=get_u64_l(u64);
}
u64_t ip_port_t::to_u64()
{
return pack_u64(ip,port);
}
char * ip_port_t::to_s()
{
static char res[40];
sprintf(res,"%s:%d",my_ntoa(ip),port);
return res;
}

int round_up_div(int a,int b)
{
Expand Down
111 changes: 109 additions & 2 deletions common.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,10 +224,11 @@ struct address_t //TODO scope id
};
storage_t inner;

address_t()
/*address_t()
{
clear();
}
}*/

void clear()
{
memset(&inner,0,sizeof(inner));
Expand Down Expand Up @@ -440,4 +441,110 @@ int new_connected_socket(int &fd,u32_t ip,int port);
int new_listen_socket2(int &fd,address_t &addr);
int new_connected_socket2(int &fd,address_t &addr);

struct not_copy_able_t
{
not_copy_able_t()
{

}
not_copy_able_t(const not_copy_able_t &other)
{
assert(0==1);
}
const not_copy_able_t & operator=(const not_copy_able_t &other)
{
assert(0==1);
return other;
}
};


template <class key_t>
struct lru_collector_t:not_copy_able_t
{
//typedef void* key_t;
//#define key_t void*
struct lru_pair_t
{
key_t key;
my_time_t ts;
};

unordered_map<key_t,typename list<lru_pair_t>::iterator> mp;

list<lru_pair_t> q;
int update(key_t key)
{
assert(mp.find(key)!=mp.end());
auto it=mp[key];
q.erase(it);

my_time_t value=get_current_time();
if(!q.empty())
{
assert(value >=q.front().ts);
}
lru_pair_t tmp; tmp.key=key; tmp.ts=value;
q.push_front( tmp);
mp[key]=q.begin();

return 0;
}
int new_key(key_t key)
{
assert(mp.find(key)==mp.end());

my_time_t value=get_current_time();
if(!q.empty())
{
assert(value >=q.front().ts);
}
lru_pair_t tmp; tmp.key=key; tmp.ts=value;
q.push_front( tmp);
mp[key]=q.begin();

return 0;
}
int size()
{
return q.size();
}
int empty()
{
return q.empty();
}
void clear()
{
mp.clear(); q.clear();
}
my_time_t ts_of(key_t key)
{
assert(mp.find(key)!=mp.end());
return mp[key]->ts;
}

my_time_t peek_back(key_t &key)
{
assert(!q.empty());
auto it=q.end(); it--;
key=it->key;
return it->ts;
}
void erase(key_t key)
{
assert(mp.find(key)!=mp.end());
q.erase(mp[key]);
mp.erase(key);
}
/*
void erase_back()
{
assert(!q.empty());
auto it=q.end(); it--;
key_t key=it->key;
erase(key);
}*/
};


#endif /* COMMON_H_ */
Loading

0 comments on commit 4610358

Please sign in to comment.