OpenTTD
tcp_content.h
Go to the documentation of this file.
1 /* $Id: tcp_content.h 25597 2013-07-13 09:26:11Z rubidium $ */
2 
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8  */
9 
14 #ifndef NETWORK_CORE_TCP_CONTENT_H
15 #define NETWORK_CORE_TCP_CONTENT_H
16 
17 #include "os_abstraction.h"
18 #include "tcp.h"
19 #include "packet.h"
20 #include "../../debug.h"
21 
22 #ifdef ENABLE_NETWORK
23 
38 };
39 
50 };
51 
53 enum ContentID {
54  INVALID_CONTENT_ID = UINT32_MAX,
55 };
56 
58 struct ContentInfo {
60  enum State {
67  };
68 
71  uint32 filesize;
72  char filename[48];
73  char name[32];
74  char version[16];
75  char url[96];
76  char description[512];
77  uint32 unique_id;
78  byte md5sum[16];
81  uint8 tag_count;
82  char (*tags)[32];
84  bool upgrade;
85 
86  ContentInfo();
87  ~ContentInfo();
88 
89  void TransferFrom(ContentInfo *other);
90 
91  size_t Size() const;
92  bool IsSelected() const;
93  bool IsValid() const;
94 #ifndef OPENTTD_MSU
95  const char *GetTextfile(TextfileType type) const;
96 #endif /* OPENTTD_MSU */
97 };
98 
101 protected:
103  virtual void Close();
104 
106 
114  virtual bool Receive_CLIENT_INFO_LIST(Packet *p);
115 
123  virtual bool Receive_CLIENT_INFO_ID(Packet *p);
124 
137  virtual bool Receive_CLIENT_INFO_EXTID(Packet *p);
138 
152  virtual bool Receive_CLIENT_INFO_EXTID_MD5(Packet *p);
153 
170  virtual bool Receive_SERVER_INFO(Packet *p);
171 
179  virtual bool Receive_CLIENT_CONTENT(Packet *p);
180 
191  virtual bool Receive_SERVER_CONTENT(Packet *p);
192 
193  bool HandlePacket(Packet *p);
194 public:
200  NetworkContentSocketHandler(SOCKET s = INVALID_SOCKET, const NetworkAddress &address = NetworkAddress()) :
202  client_addr(address)
203  {
204  }
205 
207  virtual ~NetworkContentSocketHandler() { this->Close(); }
208 
209  bool ReceivePackets();
210 };
211 
212 #ifndef OPENTTD_MSU
214 #endif /* OPENTTD_MSU */
215 
216 #endif /* ENABLE_NETWORK */
217 
218 #endif /* NETWORK_CORE_TCP_CONTENT_H */