#include <remoteconnection.h>
Inheritance diagram for RemoteConnection:
Public Member Functions | |
RemoteConnection (int fdin_, int fdout_, const std::string &context_) | |
Constructor. | |
~RemoteConnection () | |
Destructor. | |
bool | ready_to_read () const |
See if there is data available to read. | |
char | get_message (std::string &result, const OmTime &end_time) |
Read one message from fdin. | |
void | send_message (char type, const std::string &s, const OmTime &end_time) |
Send a message. | |
void | do_close (bool wait) |
Shutdown the connection. | |
Protected Attributes | |
std::string | context |
The context to report with errors. | |
Private Member Functions | |
void | operator= (const RemoteConnection &) |
Don't allow assignment. | |
RemoteConnection (const RemoteConnection &) | |
Don't allow copying. | |
void | read_at_least (size_t min_len, const OmTime &end_time) |
Read until there are at least min_len bytes in buffer. | |
Private Attributes | |
int | fdin |
The file descriptor used for reading. | |
int | fdout |
The file descriptor used for writing. | |
std::string | buffer |
Buffer to hold unprocessed input. |
The connection is implemented using a pair of file descriptors. Messages with a single byte type code and arbitrary data as the contents can be sent and received.
Definition at line 95 of file remoteconnection.h.
RemoteConnection::RemoteConnection | ( | const RemoteConnection & | ) | [private] |
Don't allow copying.
RemoteConnection::RemoteConnection | ( | int | fdin_, | |
int | fdout_, | |||
const std::string & | context_ | |||
) |
Constructor.
RemoteConnection::~RemoteConnection | ( | ) |
void RemoteConnection::operator= | ( | const RemoteConnection & | ) | [private] |
Don't allow assignment.
void RemoteConnection::read_at_least | ( | size_t | min_len, | |
const OmTime & | end_time | |||
) | [private] |
Read until there are at least min_len bytes in buffer.
If for some reason this isn't possible, throws NetworkError.
min_len | Minimum number of bytes required in buffer. | |
end_time | If this time is reached, then a timeout exception will be thrown. If end_time == OmTime(), then keep trying indefinitely. |
Definition at line 141 of file remoteconnection.cc.
References Assert, buffer, context, DEBUGCALL, DEBUGLINE, fdin, OmTime::is_set(), OmTime::now(), OmTime::sec, and OmTime::usec.
bool RemoteConnection::ready_to_read | ( | ) | const |
See if there is data available to read.
Definition at line 236 of file remoteconnection.cc.
References buffer, DEBUGCALL, fdin, and RETURN.
Referenced by RemoteDatabase::get_remote_stats().
char RemoteConnection::get_message | ( | std::string & | result, | |
const OmTime & | end_time | |||
) |
Read one message from fdin.
[out] | result | Message data. |
end_time | If this time is reached, then a timeout exception will be thrown. If !end_time.is_set() then the operation will never timeout. |
Referenced by RemoteServer::get_message(), and RemoteDatabase::get_message().
void RemoteConnection::send_message | ( | char | type, | |
const std::string & | s, | |||
const OmTime & | end_time | |||
) |
Send a message.
type | Message type code. | |
s | Message data. | |
end_time | If this time is reached, then a timeout exception will be thrown. If !end_time.is_set() then the operation will never timeout. |
Referenced by do_close(), RemoteServer::run(), RemoteServer::send_message(), and RemoteDatabase::send_message().
void RemoteConnection::do_close | ( | bool | wait | ) |
Shutdown the connection.
wait | If true, wait for the remote end to close the connection before returning. |
Definition at line 400 of file remoteconnection.cc.
References close_fd_or_socket(), DEBUGCALL, dummy, fdin, fdout, MSG_SHUTDOWN, and send_message().
Referenced by RemoteDatabase::do_close().
int RemoteConnection::fdin [private] |
The file descriptor used for reading.
Definition at line 103 of file remoteconnection.h.
Referenced by do_close(), read_at_least(), and ready_to_read().
int RemoteConnection::fdout [private] |
The file descriptor used for writing.
Definition at line 106 of file remoteconnection.h.
Referenced by do_close().
std::string RemoteConnection::buffer [private] |
Buffer to hold unprocessed input.
Definition at line 109 of file remoteconnection.h.
Referenced by read_at_least(), and ready_to_read().
std::string RemoteConnection::context [protected] |
The context to report with errors.
Subclasses are allowed to manage this.
Definition at line 142 of file remoteconnection.h.
Referenced by read_at_least(), and RemoteServer::RemoteServer().