20class AbstractSocket :
public AnyData {
26 enum State : uint8_t { Unconnected, Listening, Connecting, Connected, Active, Closing, Destroy };
27 enum Error : uint8_t { None, Closed, Refused, Read, Write, Activate };
29 virtual void setDescriptor(
int);
30 virtual bool connect(
const std::string &, uint16_t);
31 virtual void disconnect();
33 virtual void destroy();
35 bool listen(
const std::string &, uint16_t);
38 int read(uint8_t *,
int);
40 int write(
const uint8_t *,
int);
44 std::string errorString()
const;
46 Thread *thread()
const {
return thread_; }
48 std::string address()
const;
49 uint16_t port()
const;
50 std::string peerAddress()
const;
51 uint16_t peerPort()
const;
55 AbstractSocket(
int,
int,
int);
56 virtual ~AbstractSocket();
58 int pendingRead()
const;
59 int pendingWrite()
const;
61 void setErrorString(
const std::string &)
const;
63 virtual int read_available_fd()
const;
64 virtual int read_fd(
void *_p,
int _s);
65 virtual int write_fd(
const void *_p,
int _s);
67 virtual void activateEvent();
69 virtual void stateEvent() {}
70 virtual void readEvent() {}
71 virtual void writeEvent() {}
72 virtual void incomingEvent() {}
76 mutable State state_ = State::Unconnected;
79 AbstractSocket(
const AbstractSocket &) =
delete;
80 AbstractSocket &operator=(
const AbstractSocket &) =
delete;
82 void changeDescriptor(
int);