libasynch.inc 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. {
  2. libasync: Asynchronous event management
  3. Copyright (C) 2001-2002 by
  4. Areca Systems GmbH / Sebastian Guenther, [email protected]
  5. Common interface declaration
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. }
  12. type
  13. TAsyncHandleStruct = packed record
  14. UserData: Pointer;
  15. Data: TAsyncData;
  16. end;
  17. TAsyncHandle = ^TAsyncHandleStruct;
  18. TAsyncTimer = Pointer;
  19. TAsyncCallback = procedure(UserData: Pointer); cdecl;
  20. TAsyncResult = (
  21. asyncOK,
  22. asyncInvalidHandle,
  23. asyncInvalidFileHandle,
  24. asyncHandlerAlreadySet);
  25. // Construction and destruction
  26. procedure asyncInit(
  27. Handle: TAsyncHandle); cdecl;
  28. procedure asyncFree(
  29. Handle: TAsyncHandle); cdecl;
  30. // Running and stopping the event loop
  31. procedure asyncRun(
  32. Handle: TAsyncHandle); cdecl;
  33. procedure asyncBreak(
  34. Handle: TAsyncHandle); cdecl;
  35. // Status information
  36. function asyncIsRunning(
  37. Handle: TAsyncHandle
  38. ): Boolean; cdecl;
  39. function asyncGetTicks: Int64; cdecl;
  40. // Timer management
  41. function asyncAddTimer(
  42. Handle: TAsyncHandle;
  43. MSec: LongInt;
  44. Periodic: Boolean; // False = One-shot timer, True = Periodic timer
  45. Callback: TAsyncCallback;
  46. UserData: Pointer // User data for callback
  47. ): TAsyncTimer; cdecl;
  48. procedure asyncRemoveTimer(
  49. Handle: TAsyncHandle;
  50. Timer: TASyncTimer); cdecl;
  51. // I/O callback management
  52. function asyncSetIOCallback(
  53. Handle: TAsyncHandle;
  54. IOHandle: LongInt;
  55. Callback: TAsyncCallback;
  56. UserData: Pointer): TAsyncResult; cdecl;
  57. procedure asyncClearIOCallback(
  58. Handle: TAsyncHandle;
  59. IOHandle: LongInt); cdecl;
  60. function asyncSetDataAvailableCallback(
  61. Handle: TAsyncHandle;
  62. IOHandle: LongInt;
  63. Callback: TAsyncCallback;
  64. UserData: Pointer): TAsyncResult; cdecl;
  65. procedure asyncClearDataAvailableCallback(
  66. Handle: TAsyncHandle;
  67. IOHandle: LongInt); cdecl;
  68. function asyncSetCanWriteCallback(
  69. Handle: TAsyncHandle;
  70. IOHandle: LongInt;
  71. Callback: TAsyncCallback;
  72. UserData: Pointer): TAsyncResult; cdecl;
  73. procedure asyncClearCanWriteCallback(
  74. Handle: TAsyncHandle;
  75. IOHandle: LongInt); cdecl;