summaryrefslogtreecommitdiff
path: root/fpcsrc/utils/fppkg/lnet/sys/lepolleventerh.inc
blob: 284d52044d3d066e33f4aa6d1b840ea4a319b97e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{% lepolleventerh.inc included by levents.pas }

{$ifdef Linux}

  PEpollEvent = ^epoll_event;
  TEpollEvent = epoll_event;
  PEpollData = ^epoll_data;
  TEpollData = epoll_data;
  
  { TLEpollEventer }
  
  TLEpollEventer = class(TLEventer)
   protected
    FTimeout: cInt;
    FEvents: array of TEpollEvent;
    FEventsRead: array of TEpollEvent;
    FEpollReadFD: THandle;   // this one monitors LT style for READ
    FEpollFD: THandle;       // this one monitors ET style for other
    FEpollMasterFD: THandle; // this one monitors the first two
    FFreeList: TFPObjectList;
    function GetTimeout: Integer; override;
    procedure SetTimeout(const Value: Integer); override;
    procedure HandleIgnoreRead(aHandle: TLHandle); override;
    procedure Inflate;
   public
    constructor Create; override;
    destructor Destroy; override;
    function AddHandle(aHandle: TLHandle): Boolean; override;
    function CallAction: Boolean; override;
  end;

{$endif} // linux