OpenMoHAA 0.82.0
Loading...
Searching...
No Matches
gpiPeer.h
1/*
2gpiPeer.h
3GameSpy Presence SDK
4Dan "Mr. Pants" Schoenblum
5
6Copyright 1999-2007 GameSpy Industries, Inc
7
8devsupport@gamespy.com
9
10***********************************************************************
11Please see the GameSpy Presence SDK documentation for more information
12**********************************************************************/
13
14#ifndef _GPIPEER_H_
15#define _GPIPEER_H_
16
17//INCLUDES
19#include "gpi.h"
20
21//DEFINES
23// Peer states.
25#define GPI_PEER_NOT_CONNECTED 100
26#define GPI_PEER_GETTING_SIG 101
27#define GPI_PEER_GOT_SIG 102
28#define GPI_PEER_CONNECTING 103
29#define GPI_PEER_WAITING 104
30#define GPI_PEER_CONNECTED 105
31#define GPI_PEER_DISCONNECTED 106
32
33// Timeout for a peer connection, in milliseconds.
35#define GPI_PEER_TIMEOUT (10 * 1000)
36
37// Timeout for a peer operation, in milliseconds
39#define GPI_PEER_OP_TIMEOUT 60000
40
41typedef enum
42{
43 GPI_PEER_OP_STATE_NONE,
44 GPI_PEER_OP_STATE_REQUESTED,
45 GPI_PEER_OP_STATE_FINISHED
46} GPIPeerOpState;
47
48typedef struct GPITransferID_s * GPITransferID_st;
49
50//TYPES
52// A peer message.
54typedef struct GPIMessage
55{
56 GPIBuffer buffer;
57 int type;
58 int start;
60
61typedef struct _GPIPeerOp
62{
63 GPIPeerOpState state;
64 void *userData;
65 GPCallback callback;
66 struct _GPIPeerOp * next;
67 int type;
68 gsi_time timeout;
69} GPIPeerOp;
70
71typedef struct _GPIPeerOpQueue
72{
73 GPIPeerOp * opList;
74 GPIPeerOp * first;
75 GPIPeerOp * last;
76} GPIPeerOpQueue;
77
78// A peer connection.
80typedef struct GPIPeer_s
81{
82 int state;
83 GPIBool initiated;
84 //SOCKET sock;
85 unsigned int ip;
86 unsigned short port;
87 GPProfile profile;
88 time_t timeout;
89 int nackCount;
90 GPIBuffer inputBuffer;
91 GPIBuffer outputBuffer;
92 DArray messages;
93 GPIPeerOpQueue peerOpQueue;
94 struct GPIPeer_s * pnext;
95} GPIPeer;
96
97//FUNCTIONS
99GPResult
100gpiProcessPeers(
101 GPConnection * connection
102);
103
104GPResult
105gpiPeerGetSig(
106 GPConnection * connection,
107 GPIPeer * peer
108);
109
110GPResult
111gpiPeerStartConnect(
112 GPConnection * connection,
113 GPIPeer * peer
114);
115
116// NOTE: use this function when in a gp function
117GPIPeer * gpiGetPeerByProfile(const GPConnection * connection,
118 int profileid);
119
120// NOTE: use this function only when in a UDP layer callback
121GPIPeer *gpiGetPeerByAddr(const GPConnection *connection,
122 unsigned int ip,
123 unsigned short port);
124
125gsi_bool gpiIsPeerConnected(GPIPeer *peer);
126
127GPIPeer *
128gpiAddPeer(
129 GPConnection * connection,
130 int profileid,
131 GPIBool initiate
132);
133
134void
135gpiDestroyPeer(
136 GPConnection * connection,
137 GPIPeer * peer
138);
139
140void
141gpiRemovePeer(
142 GPConnection * connection,
143 GPIPeer * peer
144);
145
146GPResult
147gpiPeerAddMessage(
148 GPConnection * connection,
149 GPIPeer * peer,
150 int type,
151 const char * message
152);
153
154GPResult
155gpiPeerStartTransferMessage(
156 GPConnection * connection,
157 GPIPeer * peer,
158 int type,
159 const struct GPITransferID_s * transferID
160);
161
162GPResult
163gpiPeerFinishTransferMessage(
164 GPConnection * connection,
165 GPIPeer * peer,
166 const char * message,
167 int len
168);
169
170GPResult
171gpiPeerSendMessages(
172 GPConnection * connection,
173 GPIPeer * peer
174);
175
176void gpiPeerLeftCallback(unsigned int ip, unsigned short port, GSUdpCloseReason reason, void *userData);
177void gpiPeerMessageCallback(unsigned int ip, unsigned short port, unsigned char *message,
178 unsigned int messageLength, gsi_bool reliable, void *userData);
179void gpiPeerAcceptedCallback(unsigned int ip, unsigned short port,
180 GSUdpErrorCode error, gsi_bool rejected, void *userData);
181void gpiPeerPingReplyCallback(unsigned int ip, unsigned short port, unsigned int latency, void *userData);
182
183void gpiPeerAddOp(GPIPeer *peer, GPIPeerOp *operation);
184void gpiPeerRemoveOp(GPIPeer *peer, GPIPeerOp *operation);
185void gpiCheckTimedOutPeerOperations(GPConnection * connection, GPIPeer * peer);
186#endif
Definition gpiBuffer.h:26
Definition gpiPeer.h:55
Definition gpiPeer.h:81
Definition gpiTransfer.h:50
Definition gpiPeer.h:72
Definition gpiPeer.h:62