-
Notifications
You must be signed in to change notification settings - Fork 18
/
clientpm.h
66 lines (55 loc) · 1.63 KB
/
clientpm.h
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
/*
Copyright 2008 Utah State University
This file is part of OIP.
OIP is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OIP is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OIP. If not, see <http://www.gnu.org/licenses/>.
*/
//this class manages the client side of a connection
#ifndef CLIENTPM_H
#define CLIENTPM_H
#ifdef WIN32
#include <winsock2.h>
#endif
#include "packetmanager.h"
#include "messages.h"
class clientpm: public packetmanager
{
private:
SDL_Thread* thread;
bool running;
Uint32 ip;
Uint16 port;
Uint8 data[MAXPACKET];
Uint16 sid;
Uint32 sock;
#ifndef WIN32
struct addrinfo *res;
#else
struct addrinfo {
sockaddr_in * ai_addr;
int ai_addrlen;
int ai_family;
int ai_flags;
int ai_protocol;
int ai_socktype;
} * res, realres;
struct sockaddr_in sin;
#endif
static int clientthread(void*self);
public:
clientpm(const string& server, const map<string, string> & opts, Uint16 port=12751);
~clientpm();
bool alive() {return running;}
//not really necessary for functioning, but necessary to be able to do test
pmdict::const_iterator begin() {return packets.begin();}
pmdict::const_iterator end() {return packets.end();}
};
#endif //CLIENTPM_H