source: network-game/common/MessageProcessor.h@ 411c1ae

Last change on this file since 411c1ae was dee75cc, checked in by dportnoy <dmp1488@…>, 11 years ago

Remove the Message.h include from several files

  • Property mode set to 100644
File size: 2.2 KB
RevLine 
[1a3c42d]1#ifndef _MESSAGE_PROCESSOR_H
2#define _MESSAGE_PROCESSOR_H
3
[5a64bea]4#include <map>
5
6#include "Compiler.h"
7
8#if defined WINDOWS
9 #include <winsock2.h>
10 #include <WS2tcpip.h>
11#elif defined LINUX
12 #include <netinet/in.h>
13#endif
14
[49da01a]15#define MSG_TYPE_ACK 1
16#define MSG_TYPE_REGISTER 2
17#define MSG_TYPE_LOGIN 3
18#define MSG_TYPE_LOGOUT 4
19#define MSG_TYPE_CHAT 5
20#define MSG_TYPE_PLAYER 6 // server sends this to update player positions
21#define MSG_TYPE_PLAYER_MOVE 7 // client sends this when a player wants to move
22#define MSG_TYPE_OBJECT 8
23#define MSG_TYPE_REMOVE_OBJECT 9
24#define MSG_TYPE_PICKUP_FLAG 10
25#define MSG_TYPE_DROP_FLAG 11
26#define MSG_TYPE_SCORE 12
27#define MSG_TYPE_START_ATTACK 13
28#define MSG_TYPE_ATTACK 14
29#define MSG_TYPE_PROJECTILE 15
30#define MSG_TYPE_REMOVE_PROJECTILE 16
[1a3c42d]31
32typedef struct
33{
[49da01a]34 unsigned int id;
35 unsigned short type;
[1a3c42d]36 char buffer[256];
37} NETWORK_MSG;
38
[5a64bea]39using namespace std;
40
[1a3c42d]41class MessageProcessor {
42public:
[5a64bea]43 MessageProcessor();
44 ~MessageProcessor();
45
[1a3c42d]46 int sendMessage(NETWORK_MSG *msg, int sock, struct sockaddr_in *dest);
47 int receiveMessage(NETWORK_MSG *msg, int sock, struct sockaddr_in *dest);
[5a64bea]48 void resendUnackedMessages(int sock);
[1a3c42d]49 void cleanAckedMessages();
50
51private:
[5a64bea]52 // this should eventually just replace the Message struct
53 class MessageContainer {
54 public:
55 MessageContainer() {
56 }
57
58 MessageContainer(const MessageContainer& mc) {
59 this->msg = mc.msg;
[9b5d30b]60 this->clientAddr = mc.clientAddr;
[5a64bea]61 }
62
63 MessageContainer(NETWORK_MSG msg, struct sockaddr_in clientAddr) {
64 this->clientAddr = clientAddr;
65 this->msg = msg;
66 }
67
68 ~MessageContainer() {
69 }
70
71 NETWORK_MSG msg;
[9b5d30b]72 struct sockaddr_in clientAddr;
[198cf2d]73 bool isAcked;
74 unsigned long long timeAcked;
[5a64bea]75 };
76
77 int lastUsedId;
[bace57b]78
79 // map from message ids to maps from player addresses to message info
80 map<int, map<unsigned long, MessageContainer> > sentMessages;
81
82 // map from message ids to the time each mesage was acked
[4dbac87]83 map<unsigned int, unsigned long long> ackedMessages;
[1a3c42d]84};
85
86#endif
Note: See TracBrowser for help on using the repository browser.