OSDN Git Service

(none)
[winbottle/winbottle.git] / bottleclient / BottleSstp.pas
1 unit BottleSstp;
2
3 interface
4
5 uses Classes, Contnrs, SyncObjs, Windows, Logs;
6
7 type
8
9   TBottleSstp = class(TThread)
10   private
11     FCueLock: TCriticalSection;
12     FCue: TObjectList; // \83X\83\8c\83b\83h\83Z\81[\83t\82É\82È\82é\82æ\82¤\82É\92\8d\88Ó
13   public
14     constructor Create(CreateSuspended: boolean);
15     destructor Destroy; override;
16     procedure Push(Bottle: TLogItem);
17     procedure Unshift(Bottle: TLogItem);
18     procedure Execute; override;
19   end;
20
21 implementation
22
23 { TBottleSstp }
24
25 constructor TBottleSstp.Create(CreateSuspended: boolean);
26 begin
27   inherited;
28   FCueLock := TCriticalSection.Create;
29   FCue := TObjectList.Create(true);
30 end;
31
32 destructor TBottleSstp.Destroy;
33 begin
34   FCue.Free;
35   FCueLock.Free;
36   inherited;
37 end;
38
39 procedure TBottleSstp.Execute;
40 begin
41   inherited;
42   while not Terminated do begin
43     sleep(2000);
44
45   end;
46 end;
47
48 procedure TBottleSstp.Push(Bottle: TLogItem);
49 var Item: TLogItem;
50 begin
51   Item := TLogItem.Create(Bottle);
52   FCueLock.Enter;
53   try
54     FCue.Add(Item);
55   finally
56     FCueLock.Leave;
57   end;
58 end;
59
60 procedure TBottleSstp.Unshift(Bottle: TLogItem);
61 var Item: TLogItem;
62 begin
63   Item := TLogItem.Create(Bottle);
64   FCueLock.Enter;
65   try
66     FCue.Insert(0, Item);
67   finally
68     FCueLock.Leave;
69   end;
70 end;
71
72 end.