IdQOTDUDPServer.pas 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. {
  2. $Project$
  3. $Workfile$
  4. $Revision$
  5. $DateUTC$
  6. $Id$
  7. This file is part of the Indy (Internet Direct) project, and is offered
  8. under the dual-licensing agreement described on the Indy website.
  9. (http://www.indyproject.org/)
  10. Copyright:
  11. (c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
  12. }
  13. {
  14. $Log$
  15. }
  16. {
  17. Rev 1.4 2004.02.03 5:44:14 PM czhower
  18. Name changes
  19. Rev 1.3 1/21/2004 3:27:16 PM JPMugaas
  20. InitComponent
  21. Rev 1.2 10/24/2003 02:54:56 PM JPMugaas
  22. These should now work with the new code.
  23. Rev 1.1 2003.10.24 10:38:30 AM czhower
  24. UDP Server todos
  25. Rev 1.0 11/13/2002 07:58:52 AM JPMugaas
  26. }
  27. unit IdQOTDUDPServer;
  28. interface
  29. {$i IdCompilerDefines.inc}
  30. uses
  31. IdAssignedNumbers, IdGlobal, IdSocketHandle, IdUDPServer;
  32. type
  33. TIdQotdUDPGetEvent = procedure (ABinding: TIdSocketHandle; var AQuote : String) of object;
  34. TIdQotdUDPServer = class(TIdUDPServer)
  35. protected
  36. FOnCommandQOTD : TIdQotdUDPGetEvent;
  37. procedure DoOnCommandQUOTD(ABinding: TIdSocketHandle; var AQuote : String); virtual;
  38. procedure DoUDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); override;
  39. procedure InitComponent; override;
  40. published
  41. property DefaultPort default IdPORT_QOTD;
  42. property OnCommandQOTD : TIdQotdUDPGetEvent read FOnCommandQOTD write FOnCommandQOTD;
  43. end;
  44. implementation
  45. { TIdQotdUDPServer }
  46. procedure TIdQotdUDPServer.InitComponent;
  47. begin
  48. inherited;
  49. DefaultPort := IdPORT_QOTD;
  50. end;
  51. procedure TIdQotdUDPServer.DoOnCommandQUOTD(ABinding: TIdSocketHandle; var AQuote : String);
  52. begin
  53. if Assigned(FOnCommandQOTD) then
  54. begin
  55. FOnCommandQOTD(ABinding, AQuote);
  56. end;
  57. end;
  58. procedure TIdQotdUDPServer.DoUDPRead(AThread: TIdUDPListenerThread;
  59. const AData: TIdBytes; ABinding: TIdSocketHandle);
  60. var
  61. s : String;
  62. begin
  63. inherited DoUDPRead(AThread, AData, ABinding);
  64. s := ''; {Do not Localize}
  65. DoOnCommandQUOTD(ABinding, s);
  66. if Length(s) > 0 then
  67. begin
  68. ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, ToBytes(s), ABinding.IPVersion);
  69. end;
  70. end;
  71. end.