Statistics
| Branch: | Tag: | Revision:

root / Client / UAdminHandling.pas @ 0:95bd93c28625

History | View | Annotate | Download (2.2 kB)

1
(*
2
 * CDDL HEADER START
3
 *
4
 * The contents of this file are subject to the terms of the
5
 * Common Development and Distribution License, Version 1.0 only
6
 * (the "License").  You may not use this file except in compliance
7
 * with the License.
8
 *
9
 * You can obtain a copy of the license at
10
 * http://www.opensource.org/licenses/cddl1.php.
11
 * See the License for the specific language governing permissions
12
 * and limitations under the License.
13
 *
14
 * When distributing Covered Code, include this CDDL HEADER in each
15
 * file and include the License file at
16
 * http://www.opensource.org/licenses/cddl1.php.  If applicable,
17
 * add the following below this CDDL HEADER, with the fields enclosed
18
 * by brackets "[]" replaced with your own identifying * information:
19
 *      Portions Copyright [yyyy] [name of copyright owner]
20
 *
21
 * CDDL HEADER END
22
 *
23
 *
24
 *      Portions Copyright 2007 Andreas Schneider
25
 *)
26
unit UAdminHandling;
27
28
{$mode objfpc}{$H+}
29
30
interface
31
32
uses
33
  Classes, SysUtils, UPacket, UPacketHandlers, UEnhancedMemoryStream, UEnums;
34
  
35
type
36
37
  { TFlushServerPacket }
38
39
  TFlushServerPacket = class(TPacket)
40
    constructor Create;
41
  end;
42
  
43
  { TQuitServerPacket }
44
45
  TQuitServerPacket = class(TPacket)
46
    constructor Create(AReason: string);
47
  end;
48
  
49
procedure OnAdminHandlerPacket(ABuffer: TEnhancedMemoryStream);
50
51
var
52
  AdminPacketHandlers: array[0..$FF] of TPacketHandler;
53
54
implementation
55
56
procedure OnAdminHandlerPacket(ABuffer: TEnhancedMemoryStream);
57
var
58
  packetHandler: TPacketHandler;
59
begin
60
  packetHandler := AdminPacketHandlers[ABuffer.ReadByte];
61
  if packetHandler <> nil then
62
    packetHandler.Process(ABuffer);
63
end;
64
65
{ TFlushServerPacket }
66
67
constructor TFlushServerPacket.Create;
68
begin
69
  inherited Create($03, 0);
70
  FStream.WriteByte($01);
71
end;
72
73
{ TQuitServerPacket }
74
75
constructor TQuitServerPacket.Create(AReason: string);
76
begin
77
  inherited Create($03, 0);
78
  FStream.WriteByte($02);
79
  FStream.WriteStringNull(AReason);
80
end;
81
82
{$WARNINGS OFF}
83
var
84
  i: Integer;
85
86
initialization
87
  for i := 0 to $FF do
88
    AdminPacketHandlers[i] := nil;
89
finalization
90
  for i := 0 to $FF do
91
    if AdminPacketHandlers[i] <> nil then
92
      AdminPacketHandlers[i].Free;
93
{$WARNINGS ON}
94
95
end.
96