4

I have a webservice constructed as follows

Main unit (a TForm):

private
  FWebBrokerBridge: TIdHTTPWebBrokerBridge;

In the create:
  FWebBrokerBridge := TIdHTTPWebBrokerBridge.Create(Self);    // TIdHTTPWebBrokerBridge = class(TIdCustomHTTPServer), in IdHTTPWebBrokerBridge.pas
  FWebBrokerBridge.RegisterWebModuleClass(TWebModuleWebServices);
  FWebBrokerBridge.... set some properties
  FWebBrokerBridge.DefaultPort := FPort;
  FWebBrokerBridge.Active := True;

The TWebModuleWebServices is in:

unit DMWebServices;

interface

type
   TWebModuleWebServices = class(TWebModule)
      procedure WebModuleCreate(Sender: TObject);

      procedure WebModuleAfterDispatch(Sender: TObject; Request: TWebRequest;
        Response: TWebResponse; var Handled: Boolean);
      procedure WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest;
        Response: TWebResponse; var Handled: Boolean);
        
      procedure WebModuleWebServicesTTInfoAction(Sender: TObject;
        Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
      ... other actions     

The main unit reads a boolean setting from an INI file and I want that value to be known in each TWebModuleWebServices instance. But how to do that?

  • The WebModuleCreate sender is a TWebModuleWebServices so I don't see much opportunity there. Maybe override the Create?
  • Use the TWebModuleWebServices Tag property?
  • Use a global variable or a singleton (it's a global boolean setting, nothing complicated)?

What would be a smart approach?

Antonio Petricca
  • 8,891
  • 5
  • 36
  • 74
Jan Doggen
  • 8,799
  • 13
  • 70
  • 144

1 Answers1

0

A general purpose good (object oriented) pratice is:

  1. Create a new TWebModule descendendant, and register it as a component into your own package.
  2. Publish a new property to pass data you need to transfer.
  3. Create you TWebModuleWebServices module inheriting from your new web module by the Delphi UI.
  4. Use the new property to dispatch data.
Antonio Petricca
  • 8,891
  • 5
  • 36
  • 74