9 #ifndef anna_comm_ClientSocket_hpp 10 #define anna_comm_ClientSocket_hpp 26 class CongestionController;
60 Socket(domain, type, transportFactory),
63 a_ignoreIncomingMessages(false) {
77 a_remoteAccessPoint(remoteAddress),
80 a_ignoreIncomingMessages(false) {
92 a_remoteAccessPoint(path),
95 a_ignoreIncomingMessages(false) {
112 Socket(localAddress, type, transportFactory),
113 a_remoteAccessPoint(remoteAddress),
116 a_ignoreIncomingMessages(false) {
136 bool isConnected()
const {
return (a_status & Status::Connected) != 0; }
148 bool isCorrupt()
const {
return (a_status & Status::Corrupt); }
164 Server* getServer() noexcept(
false);
188 virtual void setfd(
const int fd) noexcept(
false);
199 a_msMaxConnectionDelay = msMaxConnectionDelay;
225 virtual void connect() noexcept(
false);
234 void send(
Message& message) noexcept(
false);
243 void send(
Message* message) noexcept(
false);
284 Notify::_v wait(
const Millisecond &timeout,
const bool receive =
true) noexcept(
false);
296 return (a_transport != NULL) ? a_transport : reserveTransport();
305 return (a_receiver != NULL) ? a_receiver : ((a_receiverFactory == NULL) ? NULL : reserveReceiver());
314 void setReceiver(
Receiver* receive) noexcept(
false);
321 void requestClose() ;
333 virtual std::string asString()
const ;
346 static const char*
className() {
return "anna::comm::ClientSocket"; }
350 enum _v { None = 0, Connected = 1, Corrupt = 2, ClosePending = 4, Working = 8 };
352 static std::string asString(
const int status) ;
374 void getSocketOptions() noexcept(
false);
405 Notify::_v receive() noexcept(
false);
418 const DataBlock* fetch() noexcept(
false);
424 virtual int do_connect(
const sockaddr*,
const int len) noexcept(
false);
425 virtual void do_write(
const DataBlock&) noexcept(
false);
426 virtual int do_read(
const char* data,
const int size) noexcept(
false);
427 virtual void do_close() ;
430 struct PendingBytes {
434 PendingBytes() { validUntil = 0; bytesToRead = 0; }
459 mutable PendingBytes a_pendingBytes;
460 bool a_ignoreIncomingMessages;
463 void calculeExpectedSize(
const DataBlock&) ;
464 Transport* reserveTransport() noexcept(
false);
465 Transport* unsafe_reserveTransport() noexcept(
false);
466 Receiver* reserveReceiver() noexcept(
false);
467 int getTotalPendingBytes()
const ;
Definition: INetAddress.hpp:34
bool isSynchronized() const
Definition: ClientSocket.hpp:142
bool isConnected() const
Definition: ClientSocket.hpp:136
Definition: Communicator.hpp:79
Definition: Millisecond.hpp:24
static const Millisecond DefaultMaxConnectionDelay
Definition: ClientSocket.hpp:44
void deactivate(const Status::_v v)
Definition: ClientSocket.hpp:421
const Millisecond & getMaxConnectionDelay() const
Definition: ClientSocket.hpp:172
Definition: Server.hpp:53
Definition: DatagramSocket.hpp:24
void setMaxWriteDelay(const Millisecond &msMaxWriteDelay)
Definition: ClientSocket.hpp:208
void setfd(const int fd)
Definition: Handler.hpp:168
Definition: Socket.hpp:44
Definition: Socket.hpp:44
Transport * getTransport() noexcept(false)
Definition: ClientSocket.hpp:295
static const char * className()
Definition: ClientSocket.hpp:346
const AccessPoint & getRemoteAccessPoint() const
Definition: ClientSocket.hpp:129
Definition: ClientSocket.hpp:38
Definition: CongestionController.hpp:63
Definition: Transport.hpp:44
int getReceiveBufferSize() const
Definition: ClientSocket.hpp:368
bool isClosedPending() const
Definition: ClientSocket.hpp:154
ClientSocket(TransportFactory *transportFactory=NULL, Domain::_v domain=Socket::Domain::Inet, Type::_v type=Socket::Type::Stream)
Definition: ClientSocket.hpp:59
Definition: ClientSocket.hpp:349
static const Millisecond DefaultMaxWriteDelay
Definition: ClientSocket.hpp:50
bool isCorrupt() const
Definition: ClientSocket.hpp:148
Definition: Buffer.hpp:22
Definition: Socket.hpp:49
Definition: Message.hpp:26
Receiver * getReceiver() noexcept(false)
Definition: ClientSocket.hpp:304
_v
Definition: ClientSocket.hpp:350
bool hasRequestedClose() const
Definition: ClientSocket.hpp:327
void setIgnoreIncomingMessages(const bool ignoreIncomingMessages)
Definition: ClientSocket.hpp:220
ClientSocket(const std::string &path, const Type::_v type=Socket::Type::Stream)
Definition: ClientSocket.hpp:90
Definition: Socket.hpp:39
int getBufferSize() const
Definition: ClientSocket.hpp:362
_v
Definition: Handler.hpp:48
bool getIgnoreIncomingMessages() const
Definition: ClientSocket.hpp:214
Definition: Receiver.hpp:33
void activate(const Status::_v v)
Definition: ClientSocket.hpp:420
ClientSocket(const INetAddress &remoteAddress, const INetAddress &localAddress, TransportFactory *transportFactory=NULL, const Type::_v type=Socket::Type::Stream)
Definition: ClientSocket.hpp:111
virtual ~ClientSocket()
Definition: ClientSocket.hpp:123
void deactivate(const int v)
Definition: ClientSocket.hpp:422
Definition: TransportFactory.hpp:30
AccessPoint a_remoteAccessPoint
Definition: ClientSocket.hpp:356
Transport * a_transport
Definition: ClientSocket.hpp:355
Definition: DataBlock.hpp:24
Definition: AccessPoint.hpp:37
ClientSocket(const INetAddress &remoteAddress, TransportFactory *transportFactory=NULL, const Type::_v type=Socket::Type::Stream)
Definition: ClientSocket.hpp:75
const Millisecond & getMaxWriteDelay() const
Definition: ClientSocket.hpp:180
void setMaxConnectionDelay(const Millisecond &msMaxConnectionDelay)
Definition: ClientSocket.hpp:197