Line 1... |
Line 1... |
// $Id: Rw11VirtTermTcp.hpp 504 2013-04-13 15:37:24Z mueller $
|
// $Id: Rw11VirtTermTcp.hpp 508 2013-04-20 18:43:28Z 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-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.hpp 504 2013-04-13 15:37:24Z mueller $
|
\version $Id: Rw11VirtTermTcp.hpp 508 2013-04-20 18:43:28Z mueller $
|
\brief Declaration of class Rw11VirtTermTcp.
|
\brief Declaration of class Rw11VirtTermTcp.
|
*/
|
*/
|
|
|
#ifndef included_Retro_Rw11VirtTermTcp
|
#ifndef included_Retro_Rw11VirtTermTcp
|
#define included_Retro_Rw11VirtTermTcp 1
|
#define included_Retro_Rw11VirtTermTcp 1
|
|
|
|
#include <deque>
|
|
|
#include "Rw11VirtTerm.hpp"
|
#include "Rw11VirtTerm.hpp"
|
|
|
namespace Retro {
|
namespace Retro {
|
|
|
class Rw11VirtTermTcp : public Rw11VirtTerm {
|
class Rw11VirtTermTcp : public Rw11VirtTerm {
|
Line 43... |
Line 46... |
|
|
virtual void Dump(std::ostream& os, int ind=0, const char* text=0) const;
|
virtual void Dump(std::ostream& os, int ind=0, const char* text=0) const;
|
|
|
// statistics counter indices
|
// statistics counter indices
|
enum stats {
|
enum stats {
|
kStatNVTListenPoll = Rw11VirtTerm::kDimStat,
|
kStatNVTPreConSave = Rw11VirtTerm::kDimStat,
|
|
kStatNVTPreConDrop,
|
|
kStatNVTListenPoll,
|
kStatNVTAccept,
|
kStatNVTAccept,
|
kStatNVTRcvRaw,
|
kStatNVTRcvRaw,
|
kStatNVTSndRaw,
|
kStatNVTSndRaw,
|
kDimStat
|
kDimStat
|
};
|
};
|
|
|
protected:
|
protected:
|
|
|
|
bool Connected() const;
|
int ListenPollHandler(const pollfd& pfd);
|
int ListenPollHandler(const pollfd& pfd);
|
int RcvPollHandler(const pollfd& pfd);
|
int RcvPollHandler(const pollfd& pfd);
|
|
|
// some constants (also defined in cpp)
|
// some constants (also defined in cpp)
|
static const uint8_t kCode_NULL = 0;
|
static const uint8_t kCode_NULL = 0;
|
Line 77... |
Line 83... |
static const uint8_t kOpt_ECHO = 1;
|
static const uint8_t kOpt_ECHO = 1;
|
static const uint8_t kOpt_SGA = 3;
|
static const uint8_t kOpt_SGA = 3;
|
static const uint8_t kOpt_TTYP = 24;
|
static const uint8_t kOpt_TTYP = 24;
|
static const uint8_t kOpt_LINE = 34;
|
static const uint8_t kOpt_LINE = 34;
|
|
|
|
static const size_t kPreConQue_limit = 65536;
|
|
|
enum telnet_state {
|
enum telnet_state {
|
ts_Closed = 0,
|
ts_Closed = 0,
|
ts_Listen,
|
ts_Listen,
|
ts_Stream,
|
ts_Stream,
|
ts_Iac,
|
ts_Iac,
|
Line 92... |
Line 100... |
protected:
|
protected:
|
int fFdListen;
|
int fFdListen;
|
int fFd;
|
int fFd;
|
telnet_state fState;
|
telnet_state fState;
|
bool fTcpTrace;
|
bool fTcpTrace;
|
|
std::deque<uint8_t> fSndPreConQue;
|
};
|
};
|
|
|
} // end namespace Retro
|
} // end namespace Retro
|
|
|
//#include "Rw11VirtTermTcp.ipp"
|
#include "Rw11VirtTermTcp.ipp"
|
|
|
#endif
|
#endif
|
|
|
No newline at end of file
|
No newline at end of file
|