OpenTTD

Functions | Variables
network_command.cpp File Reference

Command handling over network connections. More...

`#include "../stdafx.h"`
`#include "network_admin.h"`
`#include "network_client.h"`
`#include "network_server.h"`
`#include "../command_func.h"`
`#include "../company_func.h"`
`#include "../settings_type.h"`
`#include "../safeguards.h"`

Go to the source code of this file.

## Functions
void | NetworkSendCommand (TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback, const char *text, CompanyID company)
| Prepare a DoCommand to be send over the network. More...
void | NetworkSyncCommandQueue (NetworkClientSocket *cs)
| Sync our local command queue to the command queue of the given socket. More...
void | NetworkExecuteLocalCommandQueue ()
| Execute all commands on the local command queue that ought to be executed this frame.
void | NetworkFreeLocalCommandQueue ()
| Free the local command queues.
static void | DistributeCommandPacket (CommandPacket &cp, const NetworkClientSocket *owner)
| "Send" a particular CommandPacket to all clients. More...
static void | DistributeQueue (CommandQueue *queue, const NetworkClientSocket *owner)
| "Send" a particular CommandQueue to all clients. More...
void | NetworkDistributeCommands ()
| Distribute the commands of ourself and the clients. More...

## Variables
static CommandCallback *const | _callback_table []
| Table with all the callbacks we'll use for conversion. More...
static CommandQueue | _local_wait_queue
| Local queue of packets waiting for handling. More...
static CommandQueue | _local_execution_queue
| Local queue of packets waiting for execution. More...

## Detailed Description

Command handling over network connections.

Definition in file network_command.cpp.

## Function Documentation

## ◆ DistributeCommandPacket()

static void DistributeCommandPacket | ( | CommandPacket & | cp,
|  | const NetworkClientSocket * | owner
| ) |  |
| static

"Send" a particular CommandPacket to all clients.

Parameters

  cp | The command that has to be distributed.
  owner | The client that owns the command,

Definition at line 240 of file network_command.cpp.

References _frame_counter_max, CommandQueue::Append(), CommandContainer::callback, FOR_ALL_CLIENT_SOCKETS, CommandPacket::frame, and CommandPacket::my_cmd.

## ◆ DistributeQueue()

static void DistributeQueue | ( | CommandQueue * | queue,
|  | const NetworkClientSocket * | owner
| ) |  |
| static

"Send" a particular CommandQueue to all clients.

Parameters

  queue | The queue of commands that has to be distributed.
  owner | The client that owns the commands,

Definition at line 266 of file network_command.cpp.

Referenced by NetworkDistributeCommands().

## ◆ NetworkDistributeCommands()

void NetworkDistributeCommands | ( |  | ) |

Distribute the commands of ourself and the clients.

Definition at line 284 of file network_command.cpp.

References DistributeQueue(), and FOR_ALL_CLIENT_SOCKETS.

## ◆ NetworkSendCommand()

void NetworkSendCommand | ( | TileIndex | tile,
|  | uint32 | p1,
|  | uint32 | p2,
|  | uint32 | cmd,
|  | CommandCallback * | callback,
|  | const char * | text,
|  | CompanyID | company
| ) |  |

Prepare a DoCommand to be send over the network.

Parameters

  tile | The tile to perform a command on (see CommandProc)
  p1 | Additional data for the command (see CommandProc)
  p2 | Additional data for the command (see CommandProc)
  cmd | The command to execute (a CMD_* value)
  callback | A callback function to call after the command is finished
  text | The text to pass
  company | The company that wants to send the command

Definition at line 140 of file network_command.cpp.

## ◆ NetworkSyncCommandQueue()

void NetworkSyncCommandQueue | ( | NetworkClientSocket * | cs | ) |

Sync our local command queue to the command queue of the given socket.

This is needed for the case where we receive a command before saving the game for a joining client, but without the execution of those commands. Not syncing those commands means that the client will never get them and as such will be in a desynced state from the time it started with joining.

Parameters

  cs | The client to sync the queue to.

Definition at line 183 of file network_command.cpp.

References CommandContainer::callback, CommandPacket::next, and CommandQueue::Peek().

## Variable Documentation

## ◆ _callback_table

CommandCallback* const _callback_table[]
| static

Initial value:
= {
NULL,
CcBuildPrimaryVehicle,
CcBuildAirport,
CcBuildBridge,
CcPlaySound_SPLAT_WATER,
CcBuildDocks,
CcFoundTown,
CcBuildRoadTunnel,
CcBuildRailTunnel,
CcBuildWagon,
CcRoadDepot,
CcRailDepot,
CcPlaceSign,
CcPlaySound_EXPLOSION,
CcPlaySound_SPLAT_OTHER,
CcPlaySound_SPLAT_RAIL,
CcStation,
CcTerraform,
CcAI,
CcCloneVehicle,
CcGiveMoney,
CcCreateGroup,
CcFoundRandomTown,
CcRoadStop,
CcBuildIndustry,
CcStartStopVehicle,
CcGame,
CcAddVehicleNewGroup,
}
CcPlaceSign
void CcPlaceSign(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Callback function that is called after a sign is placed.
Definition: signs_cmd.cpp:118
CcGame
void CcGame(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
DoCommand callback function for all commands executed by Game Scripts.
Definition: game_instance.cpp:254
CcCreateGroup
void CcCreateGroup(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Opens a &#39;Rename group&#39; window for newly created group.
Definition: group_gui.cpp:987
CcRoadStop
void CcRoadStop(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Command callback for building road stops.
Definition: road_gui.cpp:199
CcAI
void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
DoCommand callback function for all commands executed by AIs.
Definition: ai_instance.cpp:252
CcBuildWagon
void CcBuildWagon(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Callback for building wagons.
Definition: train_gui.cpp:31
CcCloneVehicle
void CcCloneVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
This is the Callback method after the cloning attempt of a vehicle.
Definition: depot_gui.cpp:121
CcBuildRoadTunnel
void CcBuildRoadTunnel(const CommandCost &result, TileIndex start_tile, uint32 p1, uint32 p2)
Callback executed after a build road tunnel command has been called.
Definition: road_gui.cpp:96
CcBuildIndustry
void CcBuildIndustry(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Command callback.
Definition: industry_gui.cpp:200
CcBuildBridge
void CcBuildBridge(const CommandCost &result, TileIndex end_tile, uint32 p1, uint32 p2)
Callback executed after a build Bridge CMD has been called.
Definition: bridge_gui.cpp:61
CcBuildPrimaryVehicle
void CcBuildPrimaryVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
This is the Callback method after the construction attempt of a primary vehicle.
Definition: vehicle_gui.cpp:2826
CcStartStopVehicle
void CcStartStopVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
This is the Callback method after attempting to start/stop a vehicle.
Definition: vehicle_gui.cpp:2384
CcAddVehicleNewGroup
void CcAddVehicleNewGroup(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Open rename window after adding a vehicle to a new group via drag and drop.
Definition: group_gui.cpp:1003
CcBuildRailTunnel
void CcBuildRailTunnel(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Command callback for building a tunnel.
Definition: rail_gui.cpp:275

Table with all the callbacks we'll use for conversion.

Definition at line 25 of file network_command.cpp.

Referenced by NetworkGameSocketHandler::SendCommand().

## ◆ _local_execution_queue

CommandQueue _local_execution_queue
| static

Local queue of packets waiting for execution.

Definition at line 128 of file network_command.cpp.

## ◆ _local_wait_queue

CommandQueue _local_wait_queue
| static

Local queue of packets waiting for handling.

Definition at line 126 of file network_command.cpp.