Difference between revisions of "Unit Protocol"

From Ultibo.org
Jump to: navigation, search
Line 384: Line 384:
 
|-
 
|-
 
|colspan="2"| 
 
|colspan="2"| 
 +
|-
 +
| <code>function GetProtocolByName(const AName:String; ALock:Boolean; AState:LongWord):TNetworkProtocol;</code>
 +
| &nbsp;
 
|-
 
|-
 
| <code>function GetProtocolByType(AProtocol,ASocketType:Word; ALock:Boolean; AState:LongWord):TNetworkProtocol;</code>
 
| <code>function GetProtocolByType(AProtocol,ASocketType:Word; ALock:Boolean; AState:LongWord):TNetworkProtocol;</code>
Line 601: Line 604:
 
|-
 
|-
 
| <code>FLock:TSynchronizerHandle;</code>
 
| <code>FLock:TSynchronizerHandle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLocalLock:TMutexHandle;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 643: Line 649:
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
| <code>function GetTransportByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TProtocolTransport;</code>
+
| <code>function GetName:String;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function GetTransportByFamily(AFamily:Word; ALock:Boolean; AState:LongWord):TProtocolTransport;</code>
+
|colspan="2"|&nbsp;
| &nbsp;
+
 
|-
 
|-
| <code>function GetTransportByTransport(ATransport:TNetworkTransport; ALock:Boolean; AState:LongWord):TProtocolTransport;</code>
+
| <code>function AcquireLock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function GetTransportByNext(APrevious:TProtocolTransport; ALock,AUnlock:Boolean; AState:LongWord):TProtocolTransport;</code>
+
| <code>function ReleaseLock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
|colspan="2"|&nbsp;
 
|-
 
| <code>function AddTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
 
| &nbsp;
 
|-
 
| <code>function RemoveTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
 
| &nbsp;
 
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
Line 672: Line 670:
 
|-
 
|-
 
| <code>function FindPort(APort:Word; AWrite,ALock:Boolean):TProtocolPort; virtual;</code>
 
| <code>function FindPort(APort:Word; AWrite,ALock:Boolean):TProtocolPort; virtual;</code>
| &nbsp;
 
|-
 
|colspan="2"|&nbsp;
 
|-
 
| <code>function GetSocketByNext(APrevious:TProtocolSocket; ALock,AUnlock:Boolean; AState:LongWord):TProtocolSocket;</code>
 
| &nbsp;
 
|-
 
| <code>function CheckSocket(ASocket:TProtocolSocket; ALock:Boolean; AState:LongWord):Boolean; virtual;</code>
 
| &nbsp;
 
|-
 
| <code>function FindSocket(AFamily,AStruct,AProtocol:Word; ALocalAddress,ARemoteAddress:Pointer; ALocalPort,ARemotePort:Word; ABroadcast,AListen,ALock:Boolean; AState:LongWord):TProtocolSocket; virtual;</code>
 
| &nbsp;
 
|-
 
| <code>procedure FlushSockets(All:Boolean); virtual;</code>
 
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 795: Line 779:
 
|-
 
|-
 
| <code>function GetStatistics:TProtocolStatistics; virtual;</code>
 
| <code>function GetStatistics:TProtocolStatistics; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetTransportByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TProtocolTransport;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTransportByFamily(AFamily:Word; ALock:Boolean; AState:LongWord):TProtocolTransport;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTransportByTransport(ATransport:TNetworkTransport; ALock:Boolean; AState:LongWord):TProtocolTransport;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetTransportByNext(APrevious:TProtocolTransport; ALock,AUnlock:Boolean; AState:LongWord):TProtocolTransport;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AddTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function RemoveTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSocketByNext(APrevious:TProtocolSocket; ALock,AUnlock:Boolean; AState:LongWord):TProtocolSocket;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckSocket(ASocket:TProtocolSocket; ALock:Boolean; AState:LongWord):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function FindSocket(AFamily,AStruct,AProtocol:Word; ALocalAddress,ARemoteAddress:Pointer; ALocalPort,ARemotePort:Word; ABroadcast,AListen,ALock:Boolean; AState:LongWord):TProtocolSocket; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure FlushSockets(All:Boolean); virtual;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 1,304: Line 1,324:
 
| <code>FTransports:TNetworkList;</code>
 
| <code>FTransports:TNetworkList;</code>
 
| List of TFilterTransport objects
 
| List of TFilterTransport objects
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Manager:TProtocolManager read FManager;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Protocol:Word read FProtocol;</code>
 +
| &nbsp;
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
| <code>function GetTransportByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TFilterTransport;</code>
+
| <code>function ReaderLock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function GetTransportByFamily(AFamily:Word; ALock:Boolean; AState:LongWord):TFilterTransport;</code>
+
| <code>function ReaderUnlock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function GetTransportByTransport(ATransport:TNetworkTransport; ALock:Boolean; AState:LongWord):TFilterTransport;</code>
+
| <code>function WriterLock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function GetTransportByNext(APrevious:TFilterTransport; ALock,AUnlock:Boolean; AState:LongWord):TFilterTransport;</code>
+
| <code>function WriterUnlock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
| <code>function AddTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
+
| <code>function GetTransportByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TFilterTransport;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function RemoveTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
+
| <code>function GetTransportByFamily(AFamily:Word; ALock:Boolean; AState:LongWord):TFilterTransport;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
| <code>function GetTransportByTransport(ATransport:TNetworkTransport; ALock:Boolean; AState:LongWord):TFilterTransport;</code>
|-
+
| <code>property Manager:TProtocolManager read FManager;</code>
+
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>property Protocol:Word read FProtocol;</code>
+
| <code>function GetTransportByNext(APrevious:TFilterTransport; ALock,AUnlock:Boolean; AState:LongWord):TFilterTransport;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
| <code>function ReaderLock:Boolean;</code>
+
| <code>function AddTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function ReaderUnlock:Boolean;</code>
+
| <code>function RemoveTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 1,467: Line 1,487:
 
| List of TConfigTransport objects
 
| List of TConfigTransport objects
 
|-
 
|-
|colspan="2"|&nbsp;
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 
|-
 
|-
| <code>function GetTransportByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TConfigTransport;</code>
+
| <code>property Manager:TProtocolManager read FManager;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function GetTransportByFamily(AFamily:Word; ALock:Boolean; AState:LongWord):TConfigTransport;</code>
+
| <code>property ConfigType:Word read FConfigType;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function GetTransportByTransport(ATransport:TNetworkTransport; ALock:Boolean; AState:LongWord):TConfigTransport;</code>
+
| <code>property InitDelay:LongWord read FInitDelay;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function GetTransportByNext(APrevious:TConfigTransport; ALock,AUnlock:Boolean; AState:LongWord):TConfigTransport;</code>
+
| <code>property RetryCount:LongWord read FRetryCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RetryTimeout:LongWord read FRetryTimeout;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
| <code>function AddTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
+
| <code>function ReaderLock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function RemoveTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
+
| <code>function ReaderUnlock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
| <code>function WriterLock:Boolean;</code>
 +
| &nbsp;
 
|-
 
|-
| <code>property Manager:TProtocolManager read FManager;</code>
+
| <code>function WriterUnlock:Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>property ConfigType:Word read FConfigType;</code>
+
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetTransportByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TConfigTransport;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>property InitDelay:LongWord read FInitDelay;</code>
+
| <code>function GetTransportByFamily(AFamily:Word; ALock:Boolean; AState:LongWord):TConfigTransport;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>property RetryCount:LongWord read FRetryCount;</code>
+
| <code>function GetTransportByTransport(ATransport:TNetworkTransport; ALock:Boolean; AState:LongWord):TConfigTransport;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>property RetryTimeout:LongWord read FRetryTimeout;</code>
+
| <code>function GetTransportByNext(APrevious:TConfigTransport; ALock,AUnlock:Boolean; AState:LongWord):TConfigTransport;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
| <code>function ReaderLock:Boolean;</code>
+
| <code>function AddTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>function ReaderUnlock:Boolean;</code>
+
| <code>function RemoveTransport(ATransport:TNetworkTransport):Boolean; virtual;</code>
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-

Revision as of 05:56, 28 July 2017

Return to Unit Reference


Description


Ultibo Network Protocol interface unit

To be documented

Constants



[Expand]
Protocol specific constants PROTOCOL_*


[Expand]
Protocol timer key values SOCKET_TIMER_KEY_*


[Expand]
Protocol timer flag values SOCKET_TIMER_FLAG_*


[Expand]
ICMP header type ICMP_*


[Expand]
ICMP header code ICMP_UNREACH_*


[Expand]
IGMP header type IGMP_*


Type definitions



Protocol statistics

[Expand]

PProtocolStatistics = ^TProtocolStatistics;

TProtocolStatistics = record

Socket timer item

[Expand]

PSocketTimerItem = ^TSocketTimerItem;

TSocketTimerItem = record

Protocol callback

TProtocolCallback = function(AProtocol:TNetworkProtocol):Boolean of object;

Filter callback

TFilterCallback = function(AFilter:TNetworkFilter):Boolean of object;

Configuration callback

TConfigCallback = function(AConfig:TNetworkConfig):Boolean of object;


Class definitions



Protocol manager

[Expand]

TProtocolManager = class(TObject)

Protocol transport

[Expand]

TProtocolTransport = class(TListObject)

Network protocol

[Expand]

TNetworkProtocol = class(TListObject)

Socket timer

[Expand]

TSocketTimer = class(TObject)

Socket thread

[Expand]

TSocketThread = class(TThread)

Protocol port

[Expand]

TProtocolPort = class(TListObject)

Protocol socket

[Expand]

TProtocolSocket = class(TTransportSocket)

Protocol state

[Expand]

TProtocolState = class(TObject)

Protocol options

[Expand]

TProtocolOptions = class(TObject)

Filter transport

[Expand]

TFilterTransport = class(TListObject)

Network filter

[Expand]

TNetworkFilter = class(TListObject)

Configuration transport

[Expand]

TConfigTransport = class(TListObject)

Network configuration

[Expand]

TNetworkConfig = class(TListObject)

Network client

[Expand]

TNetworkClient = class(TListObject)


Public variables



Protocol specific variables

ProtocolManager:TProtocolManager;


Function declarations



Initialization functions

[Expand]
procedure ProtocolInit;
Description: To be documented


[Expand]
function ProtocolStart:LongWord;
Description: To be documented


[Expand]
function ProtocolStop:LongWord;
Description: To be documented


Protocol helper functions

[Expand]
procedure ProtocolCheckTimer(Data:Pointer);
Description: To be documented


Return to Unit Reference