⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgtypes.pas

📁 Delphi MsgCommunicator 2-10 component.I ve used, really good job. can be Server-Client message appl
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit MsgTypes;

interface

{$I MsgVer.inc}

uses
     SysUtils, Classes,
{$IFDEF MSWINDOWS}
     Controls,
     Windows,
{$ENDIF}

// MsgCommunicator units
{$IFDEF LINUX}
     MsgLinux,
{$ENDIF}
     {$IFDEF DEBUG_LOG}
     MsgDebug,
     {$ENDIF}
     MsgMemory,
     MsgConst,
     MsgExcept;

type

 TMsgUserIDs = array of Cardinal;
 TMsgContactNameSource = (mcnsUserName,mcnsFirstName,mcnsLastName,mcnsFullName,
                          mcnsCustom);
 TMsgMessageType = (
// Message Types
 aamtText, aamtBinary, aamtStream,
// Command Types
 MsgUserOnLine, MsgUserOffLine,
 MsgCustomCommand,
 aamtNone
                    );

 TMsgCommandID = Int64;
 TMsgCommandHeader = packed record
  // RandomData MUST BE THE FIRST field in record !!! otherwise it will have no effect
  // CTS or CBC modes recommended. ECB not recommended - will produce same ends.
  RandomData:       array [0..3] of Integer; // 128 bit of random data
  CommandCode:      Integer; // code of the command (like in ConnectionManager.SendBuffer)
  CommandResult:    Integer; // error code or MSG_COMMAND_OK
  NativeError:      Integer; // native error code: EMsgException.NativeError
 end; // TMsgCommandHeader
 PMsgCommandHeader = ^TMsgCommandHeader;

 TMsgStringComparison = (mscmpExact,mscmpStarts,mscmpContains);
 TMsgComparisonOperator = (mcmpopNone,mcmpopEqual,mcmpopGreater,mcmpopLower,mcmpopNotEqual,
                           mcmpopGreaterEqual,mcmpopLowerEqual);
 TMsgTextComparison = packed record
  Comparison:       TMsgStringComparison;
  CaseInsensitive:  Boolean;
 end;
 TMsgDateComparison = packed record
  Comparison1:       TMsgComparisonOperator;
  DateTime1:         TDateTime;
  Comparison2:       TMsgComparisonOperator;
  DateTime2:         TDateTime;
 end;
 TMsgIntegerComparison = packed record
  Comparison1:       TMsgComparisonOperator;
  Value1:            Integer;
  Comparison2:       TMsgComparisonOperator;
  Value2:            Integer;
 end;

const MsgLowestType = MsgUserOnLine;
const MsgHighestType = MsgCustomCommand;

type

//------------------------------------------------------------------------------
// Encryption types
//------------------------------------------------------------------------------

  TMsgCryptoKey = packed record
   Key:             array [0..Msg_MAX_KEY] of Byte;
   KeySize:         Word; // 0 by default
  end;

  TMsgCryptoInfo = packed record
   KeyInfo:         TMsgCryptoKey;
   InitVector:      array [0..Msg_MAX_VECTOR] of Byte;
   Password:        String; // MsgDefaultPassword by default
   CryptoAlgorithm: Byte;  // msg_Cipher_None by Default
   CryptoMode:      Byte;  // msg_CTS by Default
   UseInitVector:   Boolean; // False by default
  end;

  TMsgCryptoControlBlock = packed record
   Data:            array [0..Msg_MAX_CONTROL_BLOCK] of Byte;
  end; // 256

  TMsgCryptoHeader = packed record
   ControlBlock:      TMsgCryptoControlBlock;
   ControlBlockCRC:   Cardinal;
   CryptoAlgorithm:   Byte;
   CryptoMode:        Byte;
   CryptoAskPassword: Byte; // ask password (1) or key (0)
   Reserverd:         array[0..4] of Byte;
  end; // 268

 TMsgCryptoParams = TMsgCryptoInfo;

//------------------------------------------------------------------------------
// general types
//------------------------------------------------------------------------------

 TMsgIntegerArray = class;

 TMsgLockParams = packed record
  RetryCount:   Integer;
  Delay:        Integer;
 end;

//------------------------------------------------------------------------------
// network types
//------------------------------------------------------------------------------


TMsgConnectParams = packed record
    ConnectionParamsTunning:          Boolean;
    PingClients:                      Boolean;
    CompressionAlgorithm:             Byte;
    CompressionMode:                  Byte;
    CryptoInfo:                       TMsgCryptoInfo;
    RemoteHost:                       String;
    RemotePort:                       Integer;
    LocalHost:                        String;
    LocalPort:                        Integer;
    ServerID:                         Integer;
    PacketSize:                       Integer;
    MaxThreadCount:                   Integer;
    TestPacketCount:                  Integer;
    ConnectRetryCount:                Integer;
    ConnectDelay:                     Integer;
    StartReceiveTimeOut:              Integer;
    ReceiveTimeOut:                   Integer;
    ReceiveSleep:                     Integer;
    ServerReceiveTimeOut:             Integer;
    ServerReceiveSleep:               Integer;
    MinSendTimeOut:                   Integer;
    SendTimeOut:                      Integer;
    MinServerSendTimeOut:             Integer;
    ServerSendTimeOut:                Integer;
    WaitForSendSleep:                 Integer;
    ServerWaitForSendSleep:           Integer;
    ResendDelay:                      Integer;
    RequestDelay:                     Integer;
    ServerResendDelay:                Integer;
    ServerRequestDelay:               Integer;
    DisconnectRetryCount:             Integer;
    DisconnectDelay:                  Integer;
    WaitForTimeOut:                   Integer;
    WaitForMessagesSend:              Integer;
    WaitForServerSessionThreadTimeOut:Integer;
    ThreadsTerminateDelay:            Integer;
    ServerThreadsTerminateDelay:      Integer;
    ServerSessionTerminatorSleep:     Integer;
    WaitForPingAnswer:                Integer;
    ServerPingSleep:                  Integer;
 end;
 PMsgConnectParams = ^TMsgConnectParams;




 TMsgSessionID = Integer;

 // MsgDatabaseFile Mode Types
 TMsgShareMode = (smExclusive, smShared);
 TMsgAccessMode = (amReadOnly, amReadWrite);

 TMsgTimeoutParams = record
  RetryCount:   Word;
  Timeout:      Integer;
 end;

////////////////////////////////////////////////////////////////////////////////
//
// TMsgIntegerArray
//
////////////////////////////////////////////////////////////////////////////////

 TMsgIntegerArray = class(TObject)
   public
     Items:          array of Integer;
     ItemCount:      Integer;
     AllocBy:        Integer;
     deAllocBy:      Integer;
     MaxAllocBy:     Integer;
     AllocItemCount: Integer;

     constructor Create(
      size: Integer = 0;
      DefaultAllocBy: Integer = 10;
      MaximumAllocBy: Integer = 100
     );
     destructor Destroy; override;
     procedure SetSize(newSize: Integer);
     procedure Assign(v: TMsgIntegerArray);
     procedure Append(value: Integer);
     procedure Add(value: Integer);
     procedure Remove(value: Integer);
     procedure Insert(ItemNo: Integer; value: Integer);
     procedure Delete(ItemNo: Integer);
     procedure MoveTo(itemNo, newItemNo: Integer); 
     procedure CopyTo(
                      var ar: array of Integer; 
                      itemNo, iCount: Integer
                      ); 
     function IsValueExists(value: Integer): Boolean;
 end; // TMsgIntegerArray
	
	
//////////////////////////////////////////////////////////////////////////////// 
//
// TMsgThreadIntArray
//
//////////////////////////////////////////////////////////////////////////////// 
	
 TMsgThreadIntArray = class(TMsgIntegerArray) 
   private 
    FCSect:         TRTLCriticalSection;
   public 
    constructor Create( 
      size: Integer = 0; 
      DefaultAllocBy: Integer = 10;
      MaximumAllocBy: Integer = 100
                        );
    destructor Destroy; override; 
    procedure Lock;
    procedure Unlock; 
 end; // TMsgThreadIntArray 
 
	
	
//////////////////////////////////////////////////////////////////////////////// 
// 
// Other functions
//
////////////////////////////////////////////////////////////////////////////////
	
	
  // returns temporary name 
  function GetTemporaryName(Prefix: String): String; 
	
implementation
	
uses
//  MsgExpressions, 
MsgCompression, Math; 
 
 
//////////////////////////////////////////////////////////////////////////////// 
//
// TMsgIntegerArray
//
//////////////////////////////////////////////////////////////////////////////// 
	
	
//------------------------------------------------------------------------------ 
// Construct array of specified size 
//------------------------------------------------------------------------------
constructor TMsgIntegerArray.Create( 
  size: Integer;
  DefaultAllocBy: Integer;
  MaximumAllocBy: Integer
  ); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -