summaryrefslogtreecommitdiffhomepage
path: root/NetEx/NetClient.h
blob: 9e53d1110015b00bdb93871eeb7a3ad897ab08dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*  Starshatter: The Open Source Project
    Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors
    Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
    Copyright (c) 1997-2006, Destroyer Studios LLC.

    AUTHOR:       John DiCamillo


    OVERVIEW
    ========
    Stream-oriented network client class
*/

#ifndef NetClient_h
#define NetClient_h

#include <chrono>
#include <cstdint>

#include "NetAddr.h"
#include "NetSock.h"
#include "Text.h"


class NetClient
{
public:
    static const char* TYPENAME() { return "NetClient"; }

    NetClient(const NetAddr& server_addr);
    virtual ~NetClient();

    int operator == (const NetClient& c)   const { return this == &c; }

    NetAddr           GetServerAddr()      const { return addr;       }

    bool              Send(Text msg);
    Text              Recv();
    Text              SendRecv(Text msg);

    int               GetLastError()       const { return err;        }
    std::uint32_t     GetTime() const;

protected:
    NetAddr           addr;
    NetSock*          sock;
    std::chrono::high_resolution_clock::duration delta;
    std::chrono::high_resolution_clock::time_point time;
    int               err;

public:
    enum ERRS {
        ERR_INTR                = 10004,
        ERR_BADF                = 10009,
        ERR_ACCES               = 10013,
        ERR_FAULT               = 10014,
        ERR_INVAL               = 10022,
        ERR_MFILE               = 10024,

        ERR_WOULDBLOCK          = 10035,
        ERR_INPROGRESS          = 10036,
        ERR_ALREADY             = 10037,
        ERR_NOTSOCK             = 10038,
        ERR_DESTADDRREQ         = 10039,
        ERR_MSGSIZE             = 10040,
        ERR_PROTOTYPE           = 10041,
        ERR_NOPROTOOPT          = 10042,
        ERR_PROTONOSUPPORT      = 10043,
        ERR_SOCKTNOSUPPORT      = 10044,
        ERR_OPNOTSUPP           = 10045,
        ERR_PFNOSUPPORT         = 10046,
        ERR_AFNOSUPPORT         = 10047,
        ERR_ADDRINUSE           = 10048,
        ERR_ADDRNOTAVAIL        = 10049,
        ERR_NETDOWN             = 10050,
        ERR_NETUNREACH          = 10051,
        ERR_NETRESET            = 10052,
        ERR_CONNABORTED         = 10053,
        ERR_CONNRESET           = 10054,
        ERR_NOBUFS              = 10055,
        ERR_ISCONN              = 10056,
        ERR_NOTCONN             = 10057,
        ERR_SHUTDOWN            = 10058,
        ERR_TOOMANYREFS         = 10059,
        ERR_TIMEDOUT            = 10060,
        ERR_CONNREFUSED         = 10061,
        ERR_LOOP                = 10062,
        ERR_NAMETOOLONG         = 10063,
        ERR_HOSTDOWN            = 10064,
        ERR_HOSTUNREACH         = 10065,
        ERR_NOTEMPTY            = 10066,
        ERR_PROCLIM             = 10067,
        ERR_USERS               = 10068,
        ERR_DQUOT               = 10069,
        ERR_STALE               = 10070,
        ERR_REMOTE              = 10071
    };
};


#endif  // NetClient_h