libasync.inc 2.4 KB

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