1//
2// This file is part of the aMule Project.
3//
4// Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org )
5// Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net )
6//
7// Any parts of this program derived from the xMule, lMule or eMule project,
8// or contributed by third-party developers are copyrighted by their
9// respective authors.
10//
11// This program is free software; you can redistribute it and/or modify
12// it under the terms of the GNU General Public License as published by
13// the Free Software Foundation; either version 2 of the License, or
14// (at your option) any later version.
15//
16// This program is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19// GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program; if not, write to the Free Software
23// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
24//
25
26#ifndef OTHERSTRUCTS_H
27#define OTHERSTRUCTS_H
28
29#include <common/Path.h>
30
31// Defined in <zlib.h>
32struct z_stream_s;
33
34
35//			SERVER TO CLIENT
36#if defined(_MSC_VER) || defined(__SUNPRO_CC)
37#pragma pack(1)
38#endif
39struct Header_Struct{
40	int8	eDonkeyID;
41	int32	packetlength;
42	int8	command;
43}
44#if defined(_MSC_VER) || defined(__SUNPRO_CC)
45;
46#pragma pack()
47#else
48__attribute__((__packed__));
49#endif
50
51#if defined(_MSC_VER) || defined(__SUNPRO_CC)
52#pragma pack(1)
53#endif
54struct UDP_Header_Struct {
55	int8	eDonkeyID;
56	int8	command;
57}
58#if defined(_MSC_VER) || defined(__SUNPRO_CC)
59;
60#pragma pack()
61#else
62__attribute__((__packed__));
63#endif
64
65#if defined(_MSC_VER) || defined(__SUNPRO_CC)
66;
67#pragma pack(1)
68#endif
69struct Requested_Block_Struct{
70	uint64	StartOffset;
71	uint64	EndOffset;
72	uint32	packedsize;
73	unsigned char	FileID[16];
74	uint32  transferred; // Barry - This counts bytes completed
75}
76#if defined(_MSC_VER) || defined(__SUNPRO_CC)
77;
78#pragma pack()
79#else
80__attribute__((__packed__));
81#endif
82
83struct Pending_Block_Struct{
84	Requested_Block_Struct*	block;
85	struct z_stream_s*       zStream;       // Barry - Used to unzip packets
86	uint32		totalUnzipped; // Barry - This holds the total unzipped bytes for all packets so far
87	uint32		fZStreamError : 1,
88				fRecovered    : 1;
89};
90
91struct Gap_Struct{
92	uint64 start;
93	uint64 end;
94};
95
96#if defined(_MSC_VER) || defined(__SUNPRO_CC)
97#pragma pack(1)
98#endif
99struct ServerMet_Struct {
100	uint32	ip;
101	uint16	port;
102	uint32	tagcount;
103}
104#if defined(_MSC_VER) || defined(__SUNPRO_CC)
105;
106#pragma pack()
107#else
108__attribute__((__packed__));
109#endif
110
111struct TransferredData {
112	uint32	datalen;
113	uint32	timestamp;
114};
115
116
117//Kry import of 0.30d
118// Maella -Enhanced Chunk Selection- (based on jicxicmic)
119#if defined(_MSC_VER) || defined(__SUNPRO_CC)
120#pragma pack(1)
121#endif
122struct Chunk {
123	uint16 part;      // Index of the chunk
124		union {
125			uint16 frequency; // Availability of the chunk
126			uint16 rank;      // Download priority factor (highest = 0, lowest = 0xffff)
127	};
128}
129#if defined(_MSC_VER) || defined(__SUNPRO_CC)
130;
131#pragma pack()
132#else
133__attribute__((__packed__));
134#endif
135
136struct Category_Struct
137{
138	CPath		path;
139	wxString	title;
140	wxString	comment;
141	uint32		color;
142	uint8		prio;
143};
144
145
146#endif // OTHERSTRUCTS_H
147// File_checked_for_headers
148