109 lines
3.8 KiB
Ucode
109 lines
3.8 KiB
Ucode
|
//=============================================================================
|
||
|
// TcpLink: An Internet TCP/IP connection.
|
||
|
// Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
||
|
//=============================================================================
|
||
|
class TcpLink extends InternetLink
|
||
|
native
|
||
|
transient;
|
||
|
|
||
|
cpptext
|
||
|
{
|
||
|
ATcpLink();
|
||
|
void PostScriptDestroyed();
|
||
|
UBOOL Tick( FLOAT DeltaTime, enum ELevelTick TickType );
|
||
|
|
||
|
void CheckConnectionAttempt();
|
||
|
void CheckConnectionQueue();
|
||
|
void PollConnections();
|
||
|
UBOOL FlushSendBuffer();
|
||
|
void ShutdownConnection();
|
||
|
virtual UBOOL ShouldTickInEntry() { return true; }
|
||
|
virtual INT NativeReadBinary(INT Count, BYTE*& B);
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Variables.
|
||
|
|
||
|
// LinkState is only valid for TcpLink at this time.
|
||
|
var enum ELinkState
|
||
|
{
|
||
|
STATE_Initialized, // Sockets is initialized
|
||
|
STATE_Ready, // Port bound, ready for activity
|
||
|
STATE_Listening, // Listening for connections
|
||
|
STATE_Connecting, // Attempting to connect
|
||
|
STATE_Connected, // Open and connected
|
||
|
STATE_ListenClosePending,// Socket in process of closing
|
||
|
STATE_ConnectClosePending,// Socket in process of closing
|
||
|
STATE_ListenClosing, // Socket in process of closing
|
||
|
STATE_ConnectClosing // Socket in process of closing
|
||
|
} LinkState;
|
||
|
|
||
|
var IpAddr RemoteAddr; // Contains address of peer connected to from a Listen()
|
||
|
|
||
|
// If AcceptClass is not None, an actor of class AcceptClass will be spawned when an
|
||
|
// incoming connecting is accepted, leaving the listener open to accept more connections.
|
||
|
// Accepted() is called only in the child class. You can use the LostChild() and GainedChild()
|
||
|
// events to track your children.
|
||
|
var class<TcpLink> AcceptClass;
|
||
|
var const Array<byte> SendFIFO; // send fifo
|
||
|
var const string RecvBuf; // Recveive buffer (only used with MODE_Line)
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// natives.
|
||
|
|
||
|
// BindPort: Binds a free port or optional port specified in argument one.
|
||
|
native function int BindPort( optional int PortNum, optional bool bUseNextAvailable );
|
||
|
|
||
|
// Listen: Listen for connections. Can handle up to 5 simultaneous connections.
|
||
|
// Returns false if failed to place socket in listen mode.
|
||
|
native function bool Listen();
|
||
|
|
||
|
// Open: Open a connection to a foreign host.
|
||
|
native function bool Open( IpAddr Addr );
|
||
|
|
||
|
// Close: Closes the current connection.
|
||
|
native function bool Close();
|
||
|
|
||
|
// IsConnected: Returns true if connected.
|
||
|
native function bool IsConnected();
|
||
|
|
||
|
// SendText: Sends text string.
|
||
|
// Appends a cr/lf if LinkMode=MODE_Line. Returns number of bytes sent.
|
||
|
native function int SendText( coerce string Str );
|
||
|
|
||
|
// SendBinary: Send data as a byte array.
|
||
|
native function int SendBinary( int Count, byte B[255] );
|
||
|
|
||
|
// ReadText: Reads text string.
|
||
|
// Returns number of bytes read.
|
||
|
native function int ReadText( out string Str );
|
||
|
|
||
|
// ReadBinary: Read data as a byte array.
|
||
|
native function int ReadBinary( int Count, out byte B[255] );
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Events.
|
||
|
|
||
|
// Accepted: Called during STATE_Listening when a new connection is accepted.
|
||
|
event Accepted();
|
||
|
|
||
|
// Opened: Called when socket successfully connects.
|
||
|
event Opened();
|
||
|
|
||
|
// Closed: Called when Close() completes or the connection is dropped.
|
||
|
event Closed();
|
||
|
|
||
|
// ReceivedText: Called when data is received and connection mode is MODE_Text.
|
||
|
event ReceivedText( string Text );
|
||
|
|
||
|
// ReceivedLine: Called when data is received and connection mode is MODE_Line.
|
||
|
// \r\n is stripped from the line
|
||
|
event ReceivedLine( string Line );
|
||
|
|
||
|
// ReceivedBinary: Called when data is received and connection mode is MODE_Binary.
|
||
|
event ReceivedBinary( int Count, byte B[255] );
|
||
|
|
||
|
defaultproperties
|
||
|
{
|
||
|
bAlwaysTick=True
|
||
|
}
|