OpenTTD Source 20241224-master-gee860a5c8e
network_content.cpp File Reference

Content sending/receiving part of the network protocol. More...

#include "../stdafx.h"
#include "../rev.h"
#include "../ai/ai.hpp"
#include "../game/game.hpp"
#include "../window_func.h"
#include "../error.h"
#include "../fileio_func.h"
#include "../base_media_base.h"
#include "../settings_type.h"
#include "network_content.h"
#include "table/strings.h"
#include <zlib.h>
#include "../safeguards.h"

Go to the source code of this file.

Data Structures

class  NetworkContentConnecter
 Connect to the content server. More...
 

Macros

#define check_not_null(p)   { if ((p) == nullptr) { this->OnFailure(); return; } }
 
#define check_and_terminate(p)   { check_not_null(p); *(p) = '\0'; }
 

Typedefs

typedef bool(* HasProc) (const ContentInfo *ci, bool md5sum)
 Check whether a function piece of content is locally known.
 

Functions

bool HasScenario (const ContentInfo *ci, bool md5sum)
 Check whether we've got a given scenario based on its unique ID.
 
static bool HasGRFConfig (const ContentInfo *ci, bool md5sum)
 Wrapper function for the HasProc.
 
static std::string GetFullFilename (const ContentInfo *ci, bool compressed)
 Determine the full filename of a piece of content information.
 
static bool GunzipFile (const ContentInfo *ci)
 Gunzip a given file and remove the .gz if successful.
 
static ssize_t TransferOutFWrite (std::optional< FileHandle > &file, const char *buffer, size_t amount)
 Simple wrapper around fwrite to be able to pass it to Packet's TransferOut.
 

Variables

ClientNetworkContentSocketHandler _network_content_client
 The client we use to connect to the server.
 

Detailed Description

Content sending/receiving part of the network protocol.

Definition in file network_content.cpp.

Typedef Documentation

◆ HasProc

typedef bool(* HasProc) (const ContentInfo *ci, bool md5sum)

Check whether a function piece of content is locally known.

Matches on the unique ID and possibly the MD5 checksum.

Parameters
cithe content info to search for
md5sumalso match the MD5 checksum?
Returns
true iff it's known

Definition at line 51 of file network_content.cpp.

Function Documentation

◆ GetFullFilename()

static std::string GetFullFilename ( const ContentInfo ci,
bool  compressed 
)
static

Determine the full filename of a piece of content information.

Parameters
cithe information to get the filename from
compressedshould the filename end with .gz?
Returns
a statically allocated buffer with the filename or nullptr when no filename could be made.

Definition at line 384 of file network_content.cpp.

References ContentInfo::filename, GetContentInfoSubDir(), NO_DIRECTORY, SP_AUTODOWNLOAD_DIR, and ContentInfo::type.

Referenced by ClientNetworkContentSocketHandler::AfterDownload(), ClientNetworkContentSocketHandler::BeforeDownload(), and GunzipFile().

◆ GunzipFile()

static bool GunzipFile ( const ContentInfo ci)
static

Gunzip a given file and remove the .gz if successful.

Parameters
cicontainer with filename
Returns
true if the gunzip completed

Definition at line 401 of file network_content.cpp.

References GetFullFilename(), and FileHandle::Open().

Referenced by ClientNetworkContentSocketHandler::AfterDownload().

◆ HasGRFConfig()

static bool HasGRFConfig ( const ContentInfo ci,
bool  md5sum 
)
static

Wrapper function for the HasProc.

Definition at line 39 of file network_content.cpp.

References BSWAP32(), FGCM_ANY, FGCM_EXACT, FindGRFConfig(), ContentInfo::md5sum, and ContentInfo::unique_id.

Referenced by ClientNetworkContentSocketHandler::Receive_SERVER_INFO().

◆ HasScenario()

bool HasScenario ( const ContentInfo ci,
bool  md5sum 
)
extern

Check whether we've got a given scenario based on its unique ID.

Parameters
ciThe content info to compare it to.
md5sumWhether to look at the md5sum or the id.
Returns
True iff we've got the scenario.

Definition at line 710 of file fios.cpp.

References FindScenario().

Referenced by ClientNetworkContentSocketHandler::Receive_SERVER_INFO().

◆ TransferOutFWrite()

static ssize_t TransferOutFWrite ( std::optional< FileHandle > &  file,
const char *  buffer,
size_t  amount 
)
inlinestatic

Simple wrapper around fwrite to be able to pass it to Packet's TransferOut.

Parameters
fileThe file to write data to.
bufferThe buffer to write to the file.
amountThe number of bytes to write.
Returns
The number of bytes that were written.

Definition at line 470 of file network_content.cpp.

Referenced by ClientNetworkContentSocketHandler::Receive_SERVER_CONTENT().

Variable Documentation

◆ _network_content_client