2006-02-05 16:44:38 +01:00
|
|
|
#ifndef _MODGAMESPY1_H_
|
|
|
|
#define _MODGAMESPY1_H_
|
|
|
|
|
|
|
|
#include "module.h"
|
2006-04-16 21:02:41 +02:00
|
|
|
#include "multisock.h"
|
|
|
|
#include "netpkt.h"
|
|
|
|
#include "gamelist.h"
|
|
|
|
#include "list.h"
|
|
|
|
#include "timerservice.h"
|
2006-02-05 16:44:38 +01:00
|
|
|
|
|
|
|
class ModGameSpy1 : public Module {
|
|
|
|
public:
|
2006-03-06 20:13:26 +01:00
|
|
|
ModGameSpy1();
|
|
|
|
~ModGameSpy1();
|
2006-03-05 02:28:19 +01:00
|
|
|
|
2006-02-05 16:44:38 +01:00
|
|
|
void scan(MultiSock* msock);
|
2006-02-20 21:58:59 +01:00
|
|
|
int parse(NetPkt* pkt, GameList* glist);
|
2006-03-05 02:28:19 +01:00
|
|
|
|
2006-03-07 20:30:11 +01:00
|
|
|
const char* getName() { return "GameSpy 1 protocol"; }
|
|
|
|
|
|
|
|
void gc();
|
2006-03-06 20:13:26 +01:00
|
|
|
|
|
|
|
private:
|
2006-04-15 19:55:07 +02:00
|
|
|
class MultiPart : private ListEntry<MultiPart> {
|
2006-03-06 20:13:26 +01:00
|
|
|
public:
|
|
|
|
MultiPart(NetPkt* pkt, int queryid, int subid);
|
2006-04-15 19:55:07 +02:00
|
|
|
~MultiPart();
|
2006-03-06 20:13:26 +01:00
|
|
|
|
|
|
|
NetPkt* pkt;
|
|
|
|
int queryid;
|
|
|
|
int subid;
|
|
|
|
|
|
|
|
long timeout;
|
|
|
|
};
|
|
|
|
|
2006-03-07 20:30:11 +01:00
|
|
|
class GcEvent : public Event {
|
|
|
|
public:
|
|
|
|
GcEvent(ModGameSpy1& mgs1) : mgs1(mgs1) {}
|
|
|
|
~GcEvent() {}
|
|
|
|
void execute() { mgs1.gc(); }
|
|
|
|
|
|
|
|
private:
|
|
|
|
ModGameSpy1& mgs1;
|
|
|
|
};
|
|
|
|
|
2006-03-06 20:13:26 +01:00
|
|
|
NetPkt* merge(NetPkt* pkt, int queryid, int subid);
|
|
|
|
int parse_real(NetPkt* pkt, GameList* glist, int gameid);
|
|
|
|
|
2006-04-15 19:55:07 +02:00
|
|
|
LockedList<MultiPart> list;
|
2006-02-05 16:44:38 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // _MODGAMESPY1_H_
|