unit fClientInfo;
interface
uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  uBrokerConnectionInfo;
type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;
{
/// 
/// Summary description for ClientInfo.
/// 
}
  TClientInfo = class(TPersistent)
  private
    FUniqueId: Integer;
    FName: String;
    FBrokerConnectionIndex: Integer;
    FRpcHistoryEnabled: Boolean;
    FRpcLogger: TClientRpcLogger;
    FVisible: Boolean;
  protected
    function GetVisible: Boolean;
    procedure SetVisible(Value: Boolean);
    procedure Initialize;
  public
    Constructor Create; overload; virtual;
    Constructor Create(uniqueId: Integer; name: String; connectionIndex: Integer; historyEnabled: Boolean); overload; virtual;
    procedure AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: Boolean);
    function MakeCheckBoxString: String;
    function ToString: String;
    property Visible: Boolean read GetVisible write SetVisible;
    property Name: String read FName write FName;
    property RpcHistoryEnabled: Boolean read FRpcHistoryEnabled write FRPCHistoryEnabled;
    property UniqueId: Integer read FUniqueId write FUniqueId;
    property BrokerConnectionIndex: Integer read FBrokerConnectionIndex write FBrokerConnectionIndex;
  end;
const
  kRpcHistoryEnabledDefault: Boolean = true;
  kBrokerConnectionIndexDefault: Integer = -1;
var
  Form2: TForm2;
implementation
{$R *.DFM}
Constructor TClientInfo.Create;
begin
  inherited;
  Initialize;
end;
{
    /// 
    /// ClientInfo parameterized constructor
    /// 
    /// 
    /// 
    /// 
    /// 
}
Constructor TClientInfo.Create(uniqueId: Integer; name: String; connectionIndex: Integer; historyEnabled: Boolean);
begin
  Create;
      FUniqueId := uniqueId;
      FName := name;
      FBrokerConnectionIndex := connectionIndex;
      FRpcHistoryEnabled := historyEnabled;
end;
procedure TClientInfo.AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: Boolean);
begin
      if(FRpcLogger <> nil) then
        FRpcLogger.AddRpcLogEntry(entry,overrideCheckBox);
end;
procedure TClientInfo.SetVisible(Value: Boolean);
begin
  if(value) then
  begin
    if(FRpcLogger = nil) then
    begin
      FRpcLogger := TClientRpcLogger.Create;
// TODO      FRpcLogger.OnRpcLoggerClose += new EventHandler(OnRpcLoggerClosedEventHandler);
      FRpcLogger.Text := 'RPC Log for  '+Name+' ID='+IntToStr(UniqueId);
    end;
    FRpcLogger.Visible := true;
  end
  else
  begin
    if(FRpcLogger <> nil) then
    begin
            FRpcLogger.Visible := false;
            FRpcLogger := nil;
    end;
  end;
end;
function TClientInfo.GetVisible: Boolean;
begin
  result := false;
  if (FRpcLogger <> nil) then
    result := FRpcLogger.Visible;
end;
{
    /// 
    /// OnLogClosed is called when the ClientRpcLogger window is called
    /// Any event handlers by owners of this object should assign 
    /// an event handler to this event
    /// 
}
// TODO
//    public EventHandler OnLogClosed;
{
    /// 
    /// MakeCheckBoxString creates a string based on the internal members
    /// This string is intended to be used for check box list entries.
    /// 
    /// 
}
function TClientInfo.MakeCheckBoxString: String;
begin
  Result := ToString;
end;
{
    /// 
    /// ToString returns a readable string representation of the member
    /// 
    /// 
}
function TClientInfo.ToString: String;
begin
  result := FName+' connection='+IntToStr(FBrokerConnectionIndex)+' id='+IntToStr(FUniqueId);
end;
procedure TClientInfo.Initialize;
begin
      FBrokerConnectionIndex := kBrokerConnectionIndexDefault;
      FRpcHistoryEnabled := kRpcHistoryEnabledDefault;
      FRpcLogger := nil;
end;
// TODO
{
procedure TClientInfo.OnRpcLoggerClosedEventHandler(object sender, EventArgs e)
begin
  // Pass the message on to my owner
  Visible := false;
  OnLogClosed(Self,nil);
end;
}
end.