Line 1... |
Line 1... |
// $Id: Rw11VirtTermTcp.cpp 508 2013-04-20 18:43:28Z mueller $
|
// $Id: Rw11VirtTermTcp.cpp 516 2013-05-05 21:24:52Z mueller $
|
//
|
//
|
// Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
// Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
//
|
//
|
// This program is free software; you may redistribute and/or modify it under
|
// This program is free software; you may redistribute and/or modify it under
|
// the terms of the GNU General Public License as published by the Free
|
// the terms of the GNU General Public License as published by the Free
|
Line 11... |
Line 11... |
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
// for complete details.
|
// for complete details.
|
//
|
//
|
// Revision History:
|
// Revision History:
|
// Date Rev Version Comment
|
// Date Rev Version Comment
|
|
// 2013-05-05 516 1.0.2 fix mistakes in emsg generation with errno
|
// 2013-04-20 508 1.0.1 add fSndPreConQue handling
|
// 2013-04-20 508 1.0.1 add fSndPreConQue handling
|
// 2013-03-06 495 1.0 Initial version
|
// 2013-03-06 495 1.0 Initial version
|
// 2013-02-13 488 0.1 First draft
|
// 2013-02-13 488 0.1 First draft
|
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
|
|
/*!
|
/*!
|
\file
|
\file
|
\version $Id: Rw11VirtTermTcp.cpp 508 2013-04-20 18:43:28Z mueller $
|
\version $Id: Rw11VirtTermTcp.cpp 516 2013-05-05 21:24:52Z mueller $
|
\brief Implemenation of Rw11VirtTermTcp.
|
\brief Implemenation of Rw11VirtTermTcp.
|
*/
|
*/
|
|
|
#include <stdlib.h>
|
#include <stdlib.h>
|
#include <sys/types.h>
|
#include <sys/types.h>
|
Line 213... |
Line 214... |
|
|
int irc = write(fFd, obuf, pobuf-obuf);
|
int irc = write(fFd, obuf, pobuf-obuf);
|
if (irc < 0) {
|
if (irc < 0) {
|
RlogMsg lmsg(LogFile(),'E');
|
RlogMsg lmsg(LogFile(),'E');
|
RerrMsg emsg("Rw11VirtTermTcp::Snd",
|
RerrMsg emsg("Rw11VirtTermTcp::Snd",
|
string("write() for port ") + fChannelId +
|
string("write() for port ") + fChannelId + " failed: ",
|
string(" failed: ", errno));
|
errno);
|
lmsg << emsg;
|
lmsg << emsg;
|
} else {
|
} else {
|
fStats.Inc(kStatNVTSndRaw, double(irc));
|
fStats.Inc(kStatNVTSndRaw, double(irc));
|
}
|
}
|
}
|
}
|
Line 266... |
Line 267... |
fFd = accept(fFdListen, NULL, 0);
|
fFd = accept(fFdListen, NULL, 0);
|
|
|
if (fFd < 0) {
|
if (fFd < 0) {
|
RlogMsg lmsg(LogFile(),'E');
|
RlogMsg lmsg(LogFile(),'E');
|
RerrMsg emsg("Rw11VirtTermTcp::ListenPollHandler",
|
RerrMsg emsg("Rw11VirtTermTcp::ListenPollHandler",
|
string("accept() for port ") + fChannelId +
|
string("accept() for port ") + fChannelId + " failed: ",
|
string(" failed: ", errno));
|
errno);
|
lmsg << emsg;
|
lmsg << emsg;
|
// FIXME_code: proper error handling
|
// FIXME_code: proper error handling
|
return 0;
|
return 0;
|
}
|
}
|
|
|
Line 316... |
Line 317... |
close(fFd);
|
close(fFd);
|
fFd = -1;
|
fFd = -1;
|
RlogMsg lmsg(LogFile(),'E');
|
RlogMsg lmsg(LogFile(),'E');
|
RerrMsg emsg("Rw11VirtTermTcp::ListenPollHandler",
|
RerrMsg emsg("Rw11VirtTermTcp::ListenPollHandler",
|
string("initial write()s for port ") + fChannelId +
|
string("initial write()s for port ") + fChannelId +
|
string(" failed: ", errno));
|
" failed: ", errno);
|
lmsg << emsg;
|
lmsg << emsg;
|
return 0;
|
return 0;
|
}
|
}
|
|
|
if (fTcpTrace) {
|
if (fTcpTrace) {
|
Line 406... |
Line 407... |
|
|
if (irc <= 0) {
|
if (irc <= 0) {
|
if (irc < 0) {
|
if (irc < 0) {
|
RlogMsg lmsg(LogFile(),'E');
|
RlogMsg lmsg(LogFile(),'E');
|
RerrMsg emsg("Rw11VirtTermTcp::ListenPollHandler",
|
RerrMsg emsg("Rw11VirtTermTcp::ListenPollHandler",
|
string("read() for port ") + fChannelId +
|
string("read() for port ") + fChannelId + " failed: ",
|
string(" failed: ", errno));
|
errno);
|
lmsg << emsg;
|
lmsg << emsg;
|
}
|
}
|
if (fTcpTrace) {
|
if (fTcpTrace) {
|
RlogMsg lmsg(LogFile(),'I');
|
RlogMsg lmsg(LogFile(),'I');
|
lmsg << "TermTcp: close on " << fChannelId << " for " << Unit().Name();
|
lmsg << "TermTcp: close on " << fChannelId << " for " << Unit().Name();
|