00001 #include "clientinfo.h"
00002
00003 namespace n2nc {
00004
00005 ClientInfo::ClientInfo(ClientID id, net::Socket *sk){
00006
00007 this->m_ctlsk = sk ;
00008 this->m_last_ack_time = time(NULL);
00009 this->m_id = id;
00010 this->m_rsakey = NULL ;
00011 this->m_srv_sockaddr = NULL ;
00012
00013 }
00014
00015 ClientInfo::~ClientInfo(){
00016 if (this->m_rsakey)
00017 delete this->m_rsakey ;
00018 if (this->m_srv_sockaddr)
00019 delete this->m_srv_sockaddr ;
00020 }
00021
00022 time_t ClientInfo::setAckTime(){
00023 this->m_last_ack_time = time(NULL);
00024 }
00025
00026 bool ClientInfo::checkStatus(){
00027 return (time(NULL) - this->m_last_ack_time) < N2NCCLIENTINFO_CLIENT_TIMEOUT ;
00028
00029 }
00030
00031 int ClientInfo::setServicePort(uint16_t port){
00032 this->m_sport = port ;
00033 }
00034
00035 uint16_t ClientInfo::getServicePort(){
00036 return this->m_sport ;
00037 }
00038
00039 uint32_t ClientInfo::getKeyID(){
00040
00041 return this->m_id ;
00042 return 0 ;
00043 }
00044
00045
00046 net::Socket *ClientInfo::getCtlSock(){
00047 return this->m_ctlsk ;
00048 }
00049
00050 net::SocketAddress *ClientInfo::getSrvSocketAddr(){
00051 net::SocketAddress *sa, *sa2 ;
00052 net::Address *addr ;
00053
00054 if (!this->m_sport) return NULL;
00055 if (!this->m_srv_sockaddr){
00056
00057 sa2 = this->m_ctlsk->getRemoteSocketAddress() ;
00058 addr = sa2->getAddress();
00059 sa = net::Resolver::getSocketAddressByService(*addr,this->m_sport ,SOCK_DGRAM);
00060 this->m_srv_sockaddr = sa ;
00061 delete sa2 ;
00062 delete addr ;
00063 }
00064
00065 return this->m_srv_sockaddr ;
00066 }
00067
00068
00069 }
00070
00071
00072
00073
00074