Source Code (Use browser search to find items of interest.)
Class Index
kfinger'FingerProtocol (./kdenetwork/kfinger/finger.h:7)
class FingerProtocol : public QObject {
Q_OBJECT
public:
FingerProtocol(char * buff);
~FingerProtocol();
void writeString(QString s);
bool stopFlag;
bool connection( const char * host,int port);
protected:
QString st;
QSocketNotifier *sockNotif;
QSocketNotifier *sockNotif1;
char *s;
int sock;
signals:
void connectionRefused();
void update();
void finish();
public slots:
void readBuff( int);
void writeBuff(int );
};
kfinger'FingerProtocol::FingerProtocol() (./kdenetwork/kfinger/finger.C:27)
FingerProtocol::FingerProtocol(/*const char * host,int port,*/char *buff)
{
stopFlag=true ;
s=buff;
}
kfinger'FingerProtocol::~FingerProtocol() (./kdenetwork/kfinger/finger.C:34)
FingerProtocol::~FingerProtocol()
{
close( sock);
}
kfinger'FingerProtocol::connection() (./kdenetwork/kfinger/finger.C:40)
bool FingerProtocol::connection( const char * host,int port)
{
sock=::socket(PF_INET,SOCK_STREAM,0);
if (sock < 0) return false;
struct sockaddr_in server;
struct hostent *hostinfo;
server.sin_family = AF_INET;
server.sin_port = htons(port);
hostinfo = gethostbyname(host);
if ( !hostinfo )
{
debug("Unknown host: %s ", strerror(errno));
::close( sock );
sock = -1;
return false;
}
server.sin_addr = *(struct in_addr*) hostinfo->h_addr;
fcntl(sock,F_SETFL,(fcntl(sock,F_GETFL)|O_NDELAY));
errno = 0;
if (::connect(sock, (struct sockaddr*)(&server), sizeof(server))==-1)
if(errno != EINPROGRESS && errno != EWOULDBLOCK){
::close( sock );
sock = -1;
return false;
}
sockNotif = new QSocketNotifier(sock,QSocketNotifier::Read,this);
QObject::connect(sockNotif, SIGNAL(activated(int )),this,SLOT(readBuff(int )));
sockNotif1 = new QSocketNotifier(sock,QSocketNotifier::Write,this);
QObject::connect(sockNotif1, SIGNAL(activated(int )),this,SLOT(writeBuff(int )));
sockNotif->setEnabled(TRUE);
return true;
}
kfinger'FingerProtocol::readBuff() (./kdenetwork/kfinger/finger.C:79)
void FingerProtocol::readBuff( int )
{
// warning("read buff" );
sockNotif->setEnabled(FALSE);
char *b;
b=s;
char c,n;
int mn = recv( sock, s , 1, MSG_PEEK );
if ( mn <= 0 ) {
stopFlag=false;
close( sock);
emit finish();
}
else
{
int bu=0;
do {
n=read(sock,&c,1);
bu++;
if (c!='\r')
*b++=c;
} while (n==1 && bu<1000);
*b=0;
// warning("%i",bu);
update();
sockNotif->setEnabled(TRUE);
}
}
kfinger'FingerProtocol::writeBuff() (./kdenetwork/kfinger/finger.C:110)
void FingerProtocol::writeBuff(int )
{
unsigned int len;
int val;
len=sizeof(val);
getsockopt(sock,SOL_SOCKET,SO_ERROR,(char *) &val,&len );
// warning("error %d ",val);
sockNotif1->setEnabled(FALSE);
if(val==0)
write(sock,st,strlen(st));
else if(val==111)
{
connectionRefused();
// warning("connection refused");
}
}
kfinger'FingerProtocol::writeString() (./kdenetwork/kfinger/finger.C:129)
void FingerProtocol::writeString(QString s)
{
st=s;
sockNotif1->setEnabled(TRUE);
}