From c0ec0e97c911fd3dbc7936ce886dad582212adcc Mon Sep 17 00:00:00 2001 From: sg Date: Tue, 18 Apr 2000 15:34:52 +0000 Subject: [PATCH] * Added file to CVS --- fcl/tests/asiotest.pp | 85 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 fcl/tests/asiotest.pp diff --git a/fcl/tests/asiotest.pp b/fcl/tests/asiotest.pp new file mode 100644 index 0000000000..c69ee58759 --- /dev/null +++ b/fcl/tests/asiotest.pp @@ -0,0 +1,85 @@ +// $Id$ + +// AsyncIO test by Sebastian Guenther, sg@freepascal.org +// This file is in the public domain + +{$MODE objfpc} +program asiotest; +uses SysUtils, Classes, Crt, AsyncIO; + +type + + TASIOTest = class + protected + FManager: TAsyncIOManager; + Input: THandleStream; + procedure InputAvailable(UserData: TObject); + procedure Timeout(UserData: TObject); + public + constructor Create(AManager: TAsyncIOManager); + destructor Destroy; override; + end; + + + +procedure TASIOTest.InputAvailable(UserData: TObject); +var + b: Byte; +begin + b := Input.ReadByte; + Write('Input available: '); + if b >= 32 then + WriteLn('"', Chr(b), '"') + else + WriteLn('#', b); + + case b of + Ord('q'): FManager.BreakRun; + Ord('t'): FManager.ClearTimeoutHandler; + end; +end; + +procedure TASIOTest.Timeout(UserData: TObject); +begin + WriteLn('Timeout'); +end; + +constructor TASIOTest.Create(AManager: TAsyncIOManager); +begin + inherited Create; + FManager := AManager; + Input := THandleStream.Create(StdInputHandle); + AManager.SetReadHandler(Input.Handle, @InputAvailable, nil); + AManager.SetTimeoutHandler(@Timeout, nil); + AManager.Timeout := 1000; +end; + +destructor TASIOTest.Destroy; +begin + Input.Free; +end; + + +var + AsyncIOManager: TAsyncIOManager; + app: TASIOTest; + +begin + WriteLn('Exit with "q", use "t" to stop the timeout handler'); + + AsyncIOManager := TAsyncIOManager.Create; + app := TASIOTest.Create(AsyncIOManager); + + AsyncIOManager.Run; + + app.Free; + AsyncIOManager.Free; +end. + + +{ + $Log$ + Revision 1.1 2000-04-18 15:34:52 sg + * Added file to CVS + +}