// TcpSocket_p.h (c) 2011 Derek Barnett
// Marth Lab, Department of Biology, Boston College
// ---------------------------------------------------------------------------
-// Last modified: 25 October 2011 (DB)
+// Last modified: 7 December 2011 (DB)
// ---------------------------------------------------------------------------
-// Provides TCP socket I/O
+// Provides basic TCP I/O interface
// ***************************************************************************
#ifndef TCPSOCKET_P_H
namespace BamTools {
namespace Internal {
+class BamHttp;
class TcpSocketEngine;
class TcpSocket {
// enums
public:
- enum SocketError { UnknownSocketError = -1
+ enum SocketError { NoError = -2
+ , UnknownSocketError = -1
, ConnectionRefusedError = 0
, RemoteHostClosedError
, HostNotFoundError
bool CanReadLine(void) const;
void ClearBuffer(void); // force buffer to clear (not a 'flush', just a 'discard')
int64_t Read(char* data, const unsigned int numBytes);
- std::string ReadLine(void);
+ std::string ReadLine(int64_t max = 0);
+ int64_t ReadLine(char* dest, size_t max);
+ bool WaitForReadLine(void);
int64_t Write(const char* data, const unsigned int numBytes);
// connection values
const std::string& port,
IBamIODevice::OpenMode mode);
bool InitializeSocketEngine(HostAddress::NetworkProtocol protocol);
- bool ReadFromSocket(void);
+ int64_t ReadFromSocket(void);
void ResetSocketEngine(void);
// data members
TcpSocket::SocketError m_error;
TcpSocket::SocketState m_state;
std::string m_errorString;
+
+ friend class BamHttp;
};
} // namespace Internal