本文整理汇总了C++中KUser::end方法的典型用法代码示例。如果您正苦于以下问题:C++ KUser::end方法的具体用法?C++ KUser::end怎么用?C++ KUser::end使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KUser
的用法示例。
在下文中一共展示了KUser::end方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckUser
bool KUser::CheckUser(unsigned long ip,unsigned gid)
{
KUser_int_map::iterator it;
m_lock.Lock();
it=m_user.find(ip);
if(it!=m_user.end()){
if(gid==ALLUSER||gid==(*it).second.user_id){
// printf("gid==0 or gid == loginid\n");
goto done;
}
for(int i=0;i<(*it).second.gids->size();i++){
if(gid==(*it).second.gids->operator[](i)){
// printf("loginid in group gid.\n");
goto done;
}
}
}
m_lock.Unlock();
return false;
done:
(*it).second.last_active_time=time(NULL);
m_lock.Unlock();
return true;
}
示例2: CheckLogin
bool KUser::CheckLogin(const char *user)
{
KUser_int_map::iterator it;
m_lock.Lock();
for(it=m_user.begin();it!=m_user.end();it++){
if((*it).second.user->user==user){
m_lock.Unlock();
return true;
}
}
m_lock.Unlock();
return false;
}
示例3: SaveAll
void KUser::SaveAll()
{
unsigned stay_time=0;
KUser_int_map::iterator it;
int now_time=time(NULL);
m_lock.Lock();
for(it=m_user.begin();it!=m_user.end();it++){
(*it).second.user->total_time+=now_time-(*it).second.login_time;
}
m_lock.Unlock();
Save();
}
示例4: ListLoginUser
std::string KUser::ListLoginUser()
{
stringstream s;
int now_time=time(NULL);
// std::vector<std::string> user_list;
s << "<table><tr><td></td><td>user</td><td>from</td><td>stay time(sec)</td><td>inactive time(sec)</td></tr>\n";
KUser_int_map::iterator it;
m_lock.Lock();
for(it=m_user.begin();it!=m_user.end();it++){
s << "<tr><td><a href=/killloginuser?user=" << (*it).second.user->user << ">kill</a></td><td>" << (*it).second.user->user << "</td><td>" << make_ip((*it).first) << "</td><td>" << (now_time-(*it).second.login_time) << "</td><td>" << (now_time-(*it).second.last_active_time) << "</td></tr>\n";
}
// user_list.push_back((*it).second.user);
m_lock.Unlock();
s << "</table>";
return s.str();
}
示例5: ForceLogout
bool KUser::ForceLogout(const char *user,bool use_lock)
{
KUser_int_map::iterator it;
if(use_lock)
m_lock.Lock();
for(it=m_user.begin();it!=m_user.end();it++){
if((*it).second.user->user==user){
(*it).second.user->state=0;
klog(RUN_LOG,"Force logou user %s success\n",(*it).second.user->user.c_str());
m_user.erase(it);
m_lock.Unlock();
return true;
}
}
if(use_lock)
m_lock.Unlock();
return false;
}
示例6: Logout
int KUser::Logout(unsigned long ip)
{
unsigned stay_time=0;
KUser_int_map::iterator it;
m_lock.Lock();
it=m_user.find(ip);
if(it==m_user.end()){
m_lock.Unlock();
return stay_time;
}
stay_time=time(NULL)-(*it).second.login_time;
//m_user.total_time+=stay_time;
(*it).second.user->total_time+=stay_time;
(*it).second.user->state=0;//set the user logout
klog(RUN_LOG,"user %s logout success\n",(*it).second.user->user.c_str());
m_user.erase(it);
m_lock.Unlock();
return stay_time;
}
示例7: Login
bool KUser::Login(unsigned long ip,const char *user)
{
UserInfo m_userinfo;
if(!LoadUserInfo(user,m_userinfo))
return false;
LoginUserInfo tmpuser;
stringmap::iterator it2;
KUser_int_map::iterator it;
tmpuser.login_time=time(NULL);
tmpuser.last_active_time=tmpuser.login_time;
//tmpuser.user=user;
m_root_lock.Lock();
it2=m_all_user.find(user);
if(it2==m_all_user.end()){
m_root_lock.Unlock();
return false;
}
(*it2).second->last_ip=ip;
(*it2).second->state=1;//set the user login
(*it2).second->last_time=tmpuser.login_time;
tmpuser.user=(*it2).second;
tmpuser.user_id=(*it2).second->uid;
tmpuser.gids=&(*it2).second->gids;
m_root_lock.Unlock();
if(tmpuser.user_id==0){
klog(ERR_LOG,"user %s user_id is 0,It may be a bug in %s:%d\n",user,__FILE__,__LINE__);
return false;
}
m_lock.Lock();
it=m_user.find(ip);
if(it!=m_user.end())
goto err;
ForceLogout(user,false);
m_user[ip]=tmpuser;
m_lock.Unlock();
char ips[18];
make_ip(ip,ips);
klog(RUN_LOG,"user %s(%d) login from %s success\n",user,tmpuser.user_id,ips);
return true;
err:
m_lock.Unlock();
return false;
}
示例8: FlushLoginUser
void KUser::FlushLoginUser()
{
if(conf.user_time_out<=0)
return;
int now_time=time(NULL);
KUser_int_map::iterator it;
m_lock.Lock();
for(it=m_user.begin();it!=m_user.end();){
if(now_time-(*it).second.last_active_time>conf.user_time_out){
#ifndef _WIN32
(*it).second.user->state=0;
m_user.erase(it);
it++;
#else
it=m_user.erase(it);
#endif
}else{
it++;
}
}
m_lock.Unlock();
}
示例9: UpdateSendRecvSize
void KUser::UpdateSendRecvSize(unsigned long ip,int send_size,int recv_size,unsigned uid)
{
assert(send_size>=0 && recv_size>=0);
KUser_int_map::iterator it;
if(uid>STARTUID){
map<unsigned,UserInfo *>::iterator it2;
m_root_lock.Lock();
it2=m_all_user2.find(uid);
if(it2!=m_all_user2.end()){
(*it2).second->send_size+=send_size;
(*it2).second->recv_size+=recv_size;
}
m_root_lock.Unlock();
return;
}
m_lock.Lock();
it=m_user.find(ip);
if(it!=m_user.end()){
(*it).second.user->send_size+=send_size;
(*it).second.user->recv_size+=recv_size;
}
m_lock.Unlock();
}