Mercurial > pidgin
annotate libpurple/protocols/msn/p2p.h @ 30868:5964f65c17ed
Avoid duplicated code using a util function to check the flags.
author | masca@cpw.pidgin.im |
---|---|
date | Thu, 05 Aug 2010 23:42:42 +0000 |
parents | 16ab805406d1 |
children | 72e6fa6caecc |
rev | line source |
---|---|
30763 | 1 #ifndef MSN_P2P_H |
2 #define MSN_P2P_H | |
3 | |
4 | |
5 #pragma pack(push,1) | |
6 typedef struct { | |
7 guint32 session_id; | |
30764
d4869cd86680
Chang member name so it is compatible with MsnSlpHeader struct names.
masca@cpw.pidgin.im
parents:
30763
diff
changeset
|
8 guint32 id; |
30863
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
30848
diff
changeset
|
9 /** |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
30848
diff
changeset
|
10 * In a MsnSlpMessage: |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
30848
diff
changeset
|
11 * For outgoing messages this is the number of bytes from buffer that |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
30848
diff
changeset
|
12 * have already been sent out. For incoming messages this is the |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
30848
diff
changeset
|
13 * number of bytes that have been written to buffer. |
16ab805406d1
Get rid of the offset field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
30848
diff
changeset
|
14 */ |
30763 | 15 guint64 offset; |
16 guint64 total_size; | |
17 guint32 length; | |
18 guint32 flags; | |
19 guint32 ack_id; | |
30764
d4869cd86680
Chang member name so it is compatible with MsnSlpHeader struct names.
masca@cpw.pidgin.im
parents:
30763
diff
changeset
|
20 guint32 ack_sub_id; |
30763 | 21 guint64 ack_size; |
22 /* guint8 body[1]; */ | |
30767 | 23 } MsnP2PHeader; |
30763 | 24 #pragma pack(pop) |
25 | |
30839 | 26 #pragma pack(push,1) |
27 typedef struct { | |
28 guint8 header_len; | |
29 guint8 opcode; | |
30848
544221aadf6e
Fix some field sizes in P2Pv2 header.
masca@cpw.pidgin.im
parents:
30844
diff
changeset
|
30 guint16 message_len; |
544221aadf6e
Fix some field sizes in P2Pv2 header.
masca@cpw.pidgin.im
parents:
30844
diff
changeset
|
31 guint32 base_id; |
30839 | 32 } MsnP2Pv2Header; |
33 #pragma pack(pop) | |
34 | |
30766
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
30764
diff
changeset
|
35 typedef struct |
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
30764
diff
changeset
|
36 { |
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
30764
diff
changeset
|
37 guint32 value; |
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
30764
diff
changeset
|
38 } MsnP2PFooter; |
c2e911eeffc9
Drop MsnSlpFooter in favor of MsnP2pFooter.
masca@cpw.pidgin.im
parents:
30764
diff
changeset
|
39 |
30763 | 40 typedef enum |
41 { | |
42 P2P_NO_FLAG = 0x0, /**< No flags specified */ | |
43 P2P_OUT_OF_ORDER = 0x1, /**< Chunk out-of-order */ | |
44 P2P_ACK = 0x2, /**< Acknowledgement */ | |
45 P2P_PENDING_INVITE = 0x4, /**< There is a pending invite */ | |
46 P2P_BINARY_ERROR = 0x8, /**< Error on the binary level */ | |
30841
01dea46bbb42
Add some more flag definitions to the p2p flags.
masca@cpw.pidgin.im
parents:
30839
diff
changeset
|
47 P2P_FILE = 0x10, /**< File */ |
30763 | 48 P2P_MSN_OBJ_DATA = 0x20, /**< MsnObject data */ |
30841
01dea46bbb42
Add some more flag definitions to the p2p flags.
masca@cpw.pidgin.im
parents:
30839
diff
changeset
|
49 P2P_CLOSE = 0x40, /**< Close session */ |
01dea46bbb42
Add some more flag definitions to the p2p flags.
masca@cpw.pidgin.im
parents:
30839
diff
changeset
|
50 P2P_TLP_ERROR = 0x80, /**< Error at transport layer protocol */ |
01dea46bbb42
Add some more flag definitions to the p2p flags.
masca@cpw.pidgin.im
parents:
30839
diff
changeset
|
51 P2P_DC_HANDSHAKE = 0x100, /**< Direct Handshake */ |
30763 | 52 P2P_WML2009_COMP = 0x1000000, /**< Compatibility with WLM 2009 */ |
53 P2P_FILE_DATA = 0x1000030 /**< File transfer data */ | |
54 } MsnP2PHeaderFlag; | |
55 /* Info From: | |
56 * http://msnpiki.msnfanatic.com/index.php/MSNC:P2Pv1_Headers#Flags | |
57 * http://trac.kmess.org/changeset/ba04d0c825769d23370511031c47f6be75fe9b86 | |
58 * #7180 | |
59 */ | |
60 | |
30844
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
61 typedef enum |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
62 { |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
63 P2P_APPID_SESION = 0x0, /**< Negotiating session */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
64 P2P_APPID_OBJ = 0x1, /**< MsnObject (Display or Emoticon) */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
65 P2P_APPID_FILE = 0x2, /**< File transfer */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
66 P2P_APPID_EMOTE = 0xB, /**< CustomEmoticon */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
67 P2P_APPID_DISPLAY = 0xC /**< Display Image */ |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
68 } MsnP2PAppId; |
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
30841
diff
changeset
|
69 |
30767 | 70 #define P2P_PACKET_HEADER_SIZE sizeof(MsnP2PHeader) |
30799 | 71 #define P2P_PACKET_FOOTER_SIZE sizeof(MsnP2PFooter) |
30763 | 72 |
30768
f66e289bebc6
Move parsing of the p2p header to p2p to avoid duplicated code.
masca@cpw.pidgin.im
parents:
30767
diff
changeset
|
73 MsnP2PHeader * |
f66e289bebc6
Move parsing of the p2p header to p2p to avoid duplicated code.
masca@cpw.pidgin.im
parents:
30767
diff
changeset
|
74 msn_p2p_header_from_wire(MsnP2PHeader *wire); |
f66e289bebc6
Move parsing of the p2p header to p2p to avoid duplicated code.
masca@cpw.pidgin.im
parents:
30767
diff
changeset
|
75 |
f66e289bebc6
Move parsing of the p2p header to p2p to avoid duplicated code.
masca@cpw.pidgin.im
parents:
30767
diff
changeset
|
76 MsnP2PHeader * |
f66e289bebc6
Move parsing of the p2p header to p2p to avoid duplicated code.
masca@cpw.pidgin.im
parents:
30767
diff
changeset
|
77 msn_p2p_header_to_wire(MsnP2PHeader *header); |
30763 | 78 |
30782 | 79 MsnP2PFooter * |
80 msn_p2p_footer_from_wire(MsnP2PFooter *wire); | |
81 | |
82 MsnP2PFooter * | |
83 msn_p2p_footer_to_wire(MsnP2PFooter *footer); | |
84 | |
30868
5964f65c17ed
Avoid duplicated code using a util function to check the flags.
masca@cpw.pidgin.im
parents:
30863
diff
changeset
|
85 gboolean |
5964f65c17ed
Avoid duplicated code using a util function to check the flags.
masca@cpw.pidgin.im
parents:
30863
diff
changeset
|
86 msn_p2p_msg_is_data(const MsnP2PHeaderFlag flags); |
5964f65c17ed
Avoid duplicated code using a util function to check the flags.
masca@cpw.pidgin.im
parents:
30863
diff
changeset
|
87 |
30763 | 88 #endif /* MSN_P2P_H */ |