307 lines
7.4 KiB
C++
307 lines
7.4 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program 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, either version 3 of the License, or
|
|
* of the License, or(at your option) any later version.
|
|
*
|
|
* This program 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. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#ifndef AGS_PLUGINS_AGS_SOCK_H
|
|
#define AGS_PLUGINS_AGS_SOCK_H
|
|
|
|
#include "ags/plugins/ags_plugin.h"
|
|
|
|
namespace AGS3 {
|
|
namespace Plugins {
|
|
namespace AGSSock {
|
|
|
|
class AGSSock : public PluginBase {
|
|
SCRIPT_HASH(AGSSock)
|
|
private:
|
|
Common::String _text;
|
|
|
|
/**
|
|
* Creates a new data container with specified size
|
|
* (and what character to fill it with)
|
|
*/
|
|
void SockData_Create(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a new data container of zero size
|
|
*/
|
|
void SockData_CreateEmpty(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a data container from a string
|
|
*/
|
|
void SockData_CreateFromString(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the size property
|
|
*/
|
|
void SockData_get_Size(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sets the size property
|
|
*/
|
|
void SockData_set_Size(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the chars array
|
|
*/
|
|
void SockData_geti_Chars(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sets the chars array
|
|
*/
|
|
void SockData_seti_Chars(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Makes and returns a string from the data object.
|
|
* (Warning: anything after a null character will be truncated)
|
|
*/
|
|
void SockData_AsString(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Removes all the data from a socket data object,
|
|
* reducing it's size to zero
|
|
*/
|
|
void SockData_Clear(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates an empty socket address. (advanced: set type
|
|
* to IPv6 if you're using IPv6)
|
|
*/
|
|
void SockAddr_Create(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a socket address from a string.
|
|
* (for example: "https://www.scummvm.org/"
|
|
*/
|
|
void SockAddr_CreateFromString(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a socket address from raw data. (advanced)
|
|
*/
|
|
void SockAddr_CreateFromData(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a socket address from an IP-address.
|
|
* (for example: "127.0.0.1")
|
|
*/
|
|
void SockAddr_CreateIP(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a socket address from an IPv6-address.
|
|
* (for example: "::1")
|
|
*/
|
|
void SockAddr_CreateIPv6(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the value of the port property
|
|
*/
|
|
void SockAddr_get_Port(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sets the value of the port property
|
|
*/
|
|
void SockAddr_set_Port(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the value of the address property
|
|
*/
|
|
void SockAddr_get_Address(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sets the value of the address property
|
|
*/
|
|
void SockAddr_set_Address(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the value of the IP property
|
|
*/
|
|
void SockAddr_get_IP(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sets the value of the IP property
|
|
*/
|
|
void SockAddr_set_IP(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Returns a SockData object that contains the raw data
|
|
* of the socket address. (advanced)
|
|
*/
|
|
void SockAddr_GetData(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a socket for the specified protocol. (advanced)
|
|
*/
|
|
void Socket_Create(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a UDP socket. (unrealiable, connectionless, message based)
|
|
*/
|
|
void Socket_CreateUDP(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a TCP socket. (reliable, connection based, streaming)
|
|
*/
|
|
void Socket_CreateTCP(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a UDP socket for IPv6. (when in doubt use CreateUDP)
|
|
*/
|
|
void Socket_CreateUDPv6(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Creates a TCP socket for IPv6. (when in doubt use CreateTCP)
|
|
*/
|
|
void Socket_CreateTCPv6(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the value of the Tag property
|
|
*/
|
|
void Socket_get_Tag(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sets the value of the Tag property
|
|
*/
|
|
void Socket_set_Tag(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the value of the Local property
|
|
*/
|
|
void Socket_get_Local(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the value of the Remote property
|
|
*/
|
|
void Socket_get_Remote(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets the value of the Value property
|
|
*/
|
|
void Socket_get_Valid(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Returns the last error observed from this socket
|
|
* as an human readable string
|
|
*/
|
|
void Socket_ErrorString(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Binds the socket to a local address. (generally used
|
|
* before listening)
|
|
*/
|
|
void Socket_Bind(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Makes a socket listen for incoming connection requests.
|
|
* (TCP only) Backlog specifies how many requests can be
|
|
* queued. (optional)
|
|
*/
|
|
void Socket_Listen(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Makes a socket connect to a remote host. (for UDP it
|
|
* will simply bind to a remote address) Defaults to sync
|
|
* which makes it wait; see the manual for async use.
|
|
*/
|
|
void Socket_Connect(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Accepts a connection request and returns the resulting
|
|
* socket when successful. (TCP only)
|
|
*/
|
|
void Socket_Accept(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Closes the socket. (you can still receive until socket
|
|
* is marked invalid
|
|
*/
|
|
void Socket_Close(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sends a string to the remote host. Returns whether
|
|
* successful. (no error means: try again later)
|
|
*/
|
|
void Socket_Send(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sends a string to the specified remote host. (UDP only)
|
|
*/
|
|
void Socket_SendTo(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Receives a string from the remote host. (no error
|
|
* means: try again later)
|
|
*/
|
|
void Socket_Recv(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Receives a string from an unspecified host. The given
|
|
* address object will contain the remote address. (UDP only)
|
|
*/
|
|
void Socket_RecvFrom(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sends raw data to the remote host. Returns whether
|
|
* successful. (no error means: try again later
|
|
*/
|
|
void Socket_SendData(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sends raw data to the specified remote host. (UDP only)
|
|
*/
|
|
void Socket_SendDataTo(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Receives raw data from the remote host. (no error
|
|
* means: try again later
|
|
*/
|
|
void Socket_RecvData(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Receives raw data from an unspecified host. The given
|
|
* address object will contain the remote address. (UDP only)
|
|
*/
|
|
void Socket_RecvDataFrom(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Gets a socket option. (advanced)
|
|
*/
|
|
void Socket_GetOption(ScriptMethodParams ¶ms);
|
|
|
|
/**
|
|
* Sets a socket option. (advanced)
|
|
*/
|
|
void Socket_SetOption(ScriptMethodParams ¶ms);
|
|
|
|
public:
|
|
AGSSock() : PluginBase() {}
|
|
virtual ~AGSSock() {}
|
|
|
|
const char *AGS_GetPluginName() override;
|
|
void AGS_EngineStartup(IAGSEngine *engine) override;
|
|
|
|
};
|
|
|
|
} // namespace AGSSock
|
|
} // namespace Plugins
|
|
} // namespace AGS3
|
|
|
|
#endif
|