⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 peerrecipesoapdm.pas

📁 一个老外写的P2P例子...有点简单
💻 PAS
字号:
Unit PeerRecipeSoapDM;

interface

uses
  SysUtils, Classes, InvokeRegistry, Midas, SOAPMidas, SOAPDm, PeerRecipeIntf;

type
  IPeerRecipeDM = interface(IAppServerSOAP)
    ['{900AC2C2-E4C3-446B-92FF-609DB82215CB}']
  end;

  TPeerRecipeDM = class(TSoapDataModule, IPeerRecipeDM, IAppServerSOAP,
    IAppServer, IPeerRecipe)
  private
  public
    procedure Connect(const AURL: string); stdcall;
    procedure Disconnect(const AURL: string); stdcall;
    procedure FindRecipe(const ATTL: Integer;
                         const AURL: string;
                         const AGUID: string;
                         const ASearch: string); stdcall;
    procedure RecipeFound(const AGUID, ARecipe: string); stdcall;
  end;

implementation

{$R *.DFM}

uses
  PeerRecipeWebMod, WebBrokerSoap, Helpers, IPeerRecipeClient;

procedure TPeerRecipeDMCreateInstance(out obj: TObject);
begin
 obj := TPeerRecipeDM.Create(nil);
end;

{ TPeerRecipeDM }

procedure TPeerRecipeDM.Connect(const AURL: string);
begin
  AddToFile(cPeers,AURL);
end;

procedure TPeerRecipeDM.Disconnect(const AURL: string);
begin
  DeleteFromFile(cPeers,AURL);
end;

procedure TPeerRecipeDM.FindRecipe(const ATTL: Integer;
  const AURL, AGUID, ASearch: string);
var
  lIdx: Integer;
  lFile: TStringList;
  lRecipe: string;
begin
  if (ATTL > 0) and FileExists(cPeers) then
  begin
    lFile := TStringList.Create;
    try
      lFile.LoadFromFile(cPeers);
      for lIdx := 0 to pred(lFile.Count) do
      begin
        GetIPeerRecipe(lFile[lIdx]).
          FindRecipe(Pred(ATTL), AURL, AGUID, ASearch);
      end;
    finally
      lFile.Free;
    end;
  end;

  lRecipe := SearchFile(cRecipes,ASearch);
  if lRecipe <> '' then
  begin
    GetIPeerRecipe(AURL).RecipeFound(AGUID,lRecipe);
  end;

end;

procedure TPeerRecipeDM.RecipeFound(const AGUID, ARecipe: string);
begin
  AddToFile(cRecipes, ARecipe);
end;

initialization
   InvRegistry.RegisterInvokableClass(TPeerRecipeDM, TPeerRecipeDMCreateInstance);
   InvRegistry.RegisterInterface(TypeInfo(IPeerRecipeDM));
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -