unit uROPSImports; interface uses uPSCompiler, uPSRuntime, uROBINMessage, uROIndyHTTPChannel, uROXMLSerializer, uROIndyTCPChannel, idTcpClient, uROPSServerLink, uROWinInetHttpChannel; procedure SIRegisterTROBINMESSAGE(CL: TIFPSPascalCompiler); procedure SIRegisterTROINDYHTTPCHANNEL(CL: TIFPSPascalCompiler); procedure SIRegisterTROINDYTCPCHANNEL(CL: TIFPSPascalCompiler); procedure SIRegisterTIDTCPCLIENT(CL: TIFPSPascalCompiler); procedure SIRegisterRODLImports(Cl: TIFPSPascalCompiler); procedure RIRegisterTROBINMESSAGE(Cl: TIFPSRuntimeClassImporter); procedure RIRegisterTROINDYHTTPCHANNEL(Cl: TIFPSRuntimeClassImporter); procedure RIRegisterTROINDYTCPCHANNEL(Cl: TIFPSRuntimeClassImporter); procedure RIRegisterTIDTCPCLIENT(Cl: TIFPSRuntimeClassImporter); procedure RIRegisterRODLImports(CL: TIFPSRuntimeClassImporter); (* Todo: TROWinInetHTTPChannel = class(TROTransportChannel, IROTransport, IROTCPTransport, IROHTTPTransport) published property UserAgent:string read GetUserAgent write SetUserAgent; property TargetURL : string read fTargetURL write SetTargetURL; property StoreConnected:boolean read fStoreConnected write fStoreConnected default false; property KeepConnection:boolean read fKeepConnection write fKeepConnection default false; end; *) type TPSROIndyTCPModule = class(TPSROModule) protected class procedure ExecImp(exec: TIFPSExec; ri: TIFPSRuntimeClassImporter); override; class procedure CompImp(comp: TIFPSPascalCompiler); override; end; TPSROIndyHTTPModule = class(TPSROModule) protected class procedure ExecImp(exec: TIFPSExec; ri: TIFPSRuntimeClassImporter); override; class procedure CompImp(comp: TIFPSPascalCompiler); override; end; TPSROBinModule = class(TPSROModule) protected class procedure ExecImp(exec: TIFPSExec; ri: TIFPSRuntimeClassImporter); override; class procedure CompImp(comp: TIFPSPascalCompiler); override; end; implementation {procedure TROSOAPMESSAGESERIALIZATIONOPTIONS_W(Self: TROSOAPMESSAGE; const T: TXMLSERIALIZATIONOPTIONS); begin Self.SERIALIZATIONOPTIONS := T; end; procedure TROSOAPMESSAGESERIALIZATIONOPTIONS_R(Self: TROSOAPMESSAGE; var T: TXMLSERIALIZATIONOPTIONS); begin T := Self.SERIALIZATIONOPTIONS; end; procedure TROSOAPMESSAGECUSTOMLOCATION_W(Self: TROSOAPMESSAGE; const T: string); begin Self.CUSTOMLOCATION := T; end; procedure TROSOAPMESSAGECUSTOMLOCATION_R(Self: TROSOAPMESSAGE; var T: string); begin T := Self.CUSTOMLOCATION; end; procedure TROSOAPMESSAGELIBRARYNAME_W(Self: TROSOAPMESSAGE; const T: string); begin Self.LIBRARYNAME := T; end; procedure TROSOAPMESSAGELIBRARYNAME_R(Self: TROSOAPMESSAGE; var T: string); begin T := Self.LIBRARYNAME; end; } procedure TROBINMESSAGEUSECOMPRESSION_W(Self: TROBINMESSAGE; const T: boolean); begin Self.USECOMPRESSION := T; end; procedure TROBINMESSAGEUSECOMPRESSION_R(Self: TROBINMESSAGE; var T: boolean); begin T := Self.USECOMPRESSION; end; procedure TROINDYHTTPCHANNELTARGETURL_W(Self: TROINDYHTTPCHANNEL; const T: string); begin Self.TARGETURL := T; end; procedure TROINDYHTTPCHANNELTARGETURL_R(Self: TROINDYHTTPCHANNEL; var T: string); begin T := Self.TARGETURL; end; procedure TROINDYTCPCHANNELINDYCLIENT_R(Self: TROINDYTCPCHANNEL; var T: TIdTCPClientBaseClass); begin T := Self.INDYCLIENT; end; procedure TIDTCPCLIENTPORT_W(Self: TIDTCPCLIENT; const T: integer); begin Self.PORT := T; end; procedure TIDTCPCLIENTPORT_R(Self: TIdTCPClientBaseClass; var T: integer); begin T := TIdIndy10HackClient(Self).PORT; end; procedure TIDTCPCLIENTHOST_W(Self: TIdTCPClientBaseClass; const T: string); begin TIdIndy10HackClient(Self).HOST := T; end; procedure TIDTCPCLIENTHOST_R(Self: TIdTCPClientBaseClass; var T: string); begin T := TIdIndy10HackClient(Self).HOST; end; {procedure TIDTCPCLIENTBOUNDPORT_W(Self: TIdTCPClientBaseClass; const T: integer); begin Self.BOUNDPORT := T; end; procedure TIDTCPCLIENTBOUNDPORT_R(Self: TIdTCPClientBaseClass; var T: integer); begin T := Self.BOUNDPORT; end; procedure TIDTCPCLIENTBOUNDIP_W(Self: TIdTCPClientBaseClass; const T: string); begin Self.BOUNDIP := T; end; procedure TIDTCPCLIENTBOUNDIP_R(Self: TIdTCPClientBaseClass; var T: string); begin T := Self.BOUNDIP; end;] procedure TIDTCPCLIENTBOUNDPORTMIN_W(Self: TIdTCPClientBaseClass; const T: integer); begin Self.BOUNDPORTMIN := T; end; procedure TIDTCPCLIENTBOUNDPORTMIN_R(Self: TIdTCPClientBaseClass; var T: integer); begin T := Self.BOUNDPORTMIN; end; procedure TIDTCPCLIENTBOUNDPORTMAX_W(Self: TIdTCPClientBaseClass; const T: integer); begin Self.BOUNDPORTMAX := T; end; procedure TIDTCPCLIENTBOUNDPORTMAX_R(Self: TIdTCPClientBaseClass; var T: integer); begin T := Self.BOUNDPORTMAX; end; {procedure RIRegisterTROSOAPMESSAGE(Cl: TIFPSRuntimeClassImporter); begin with Cl.Add(TROSOAPMESSAGE) do begin RegisterPropertyHelper(@TROSOAPMESSAGELIBRARYNAME_R, @TROSOAPMESSAGELIBRARYNAME_W, 'LIBRARYNAME'); RegisterPropertyHelper(@TROSOAPMESSAGECUSTOMLOCATION_R, @TROSOAPMESSAGECUSTOMLOCATION_W, 'CUSTOMLOCATION'); RegisterPropertyHelper(@TROSOAPMESSAGESERIALIZATIONOPTIONS_R, @TROSOAPMESSAGESERIALIZATIONOPTIONS_W, 'SERIALIZATIONOPTIONS'); end; end; } procedure RIRegisterTROBINMESSAGE(Cl: TIFPSRuntimeClassImporter); begin with Cl.Add(TROBINMESSAGE) do begin RegisterPropertyHelper(@TROBINMESSAGEUSECOMPRESSION_R, @TROBINMESSAGEUSECOMPRESSION_W, 'USECOMPRESSION'); end; end; procedure RIRegisterTROINDYHTTPCHANNEL(Cl: TIFPSRuntimeClassImporter); begin with Cl.Add(TROINDYHTTPCHANNEL) do begin RegisterPropertyHelper(@TROINDYHTTPCHANNELTARGETURL_R, @TROINDYHTTPCHANNELTARGETURL_W, 'TARGETURL'); end; end; procedure RIRegisterTROINDYTCPCHANNEL(Cl: TIFPSRuntimeClassImporter); begin with Cl.Add(TROINDYTCPCHANNEL) do begin RegisterPropertyHelper(@TROINDYTCPCHANNELINDYCLIENT_R, nil, 'INDYCLIENT'); end; end; procedure RIRegisterTIDTCPCLIENT(Cl: TIFPSRuntimeClassImporter); begin with Cl.Add(TIdTCPClientBaseClass) do begin {RegisterPropertyHelper(@TIDTCPCLIENTBOUNDPORTMAX_R, @TIDTCPCLIENTBOUNDPORTMAX_W, 'BOUNDPORTMAX'); RegisterPropertyHelper(@TIDTCPCLIENTBOUNDPORTMIN_R, @TIDTCPCLIENTBOUNDPORTMIN_W, 'BOUNDPORTMIN'); RegisterPropertyHelper(@TIDTCPCLIENTBOUNDIP_R, @TIDTCPCLIENTBOUNDIP_W, 'BOUNDIP'); RegisterPropertyHelper(@TIDTCPCLIENTBOUNDPORT_R, @TIDTCPCLIENTBOUNDPORT_W, 'BOUNDPORT');} RegisterPropertyHelper(@TIDTCPCLIENTHOST_R, @TIDTCPCLIENTHOST_W, 'HOST'); RegisterPropertyHelper(@TIDTCPCLIENTPORT_R, @TIDTCPCLIENTPORT_W, 'PORT'); end; end; procedure RIRegisterRODLImports(CL: TIFPSRuntimeClassImporter); begin RIRegisterTIDTCPCLIENT(Cl); RIRegisterTROINDYTCPCHANNEL(Cl); RIRegisterTROINDYHTTPCHANNEL(Cl); RIRegisterTROBINMESSAGE(Cl); //RIRegisterTROSOAPMESSAGE(Cl); end; function RegClassS(cl: TIFPSPascalCompiler; const InheritsFrom, ClassName: string): TPSCompileTimeClass; begin Result := cl.FindClass(ClassName); if Result = nil then Result := cl.AddClassN(cl.FindClass(InheritsFrom), ClassName) else Result.ClassInheritsFrom := cl.FindClass(InheritsFrom); end; {procedure SIRegisterTROSOAPMESSAGE(CL: TIFPSPascalCompiler); begin Cl.addTypeS('TXMLSERIALIZATIONOPTIONS', 'BYTE'); Cl.AddConstantN('XSOWRITEMULTIREFARRAY', 'BYTE').SetInt(1); Cl.AddConstantN('XSOWRITEMULTIREFOBJECT', 'BYTE').SetInt(2); Cl.AddConstantN('XSOSENDUNTYPED', 'BYTE').SetInt(4); with RegClassS(cl, 'TROMESSAGE', 'TROSOAPMESSAGE') do begin RegisterProperty('LIBRARYNAME', 'STRING', iptrw); RegisterProperty('CUSTOMLOCATION', 'STRING', iptrw); RegisterProperty('SERIALIZATIONOPTIONS', 'TXMLSERIALIZATIONOPTIONS', iptrw); end; end;} procedure SIRegisterTROBINMESSAGE(CL: TIFPSPascalCompiler); begin with RegClassS(cl, 'TROMESSAGE', 'TROBINMESSAGE') do begin RegisterProperty('USECOMPRESSION', 'BOOLEAN', iptrw); end; end; procedure SIRegisterTROINDYHTTPCHANNEL(CL: TIFPSPascalCompiler); begin with RegClassS(cl, 'TROINDYTCPCHANNEL', 'TROINDYHTTPCHANNEL') do begin RegisterProperty('TARGETURL', 'STRING', iptrw); end; end; procedure SIRegisterTROINDYTCPCHANNEL(CL: TIFPSPascalCompiler); begin with RegClassS(cl, 'TROTRANSPORTCHANNEL', 'TROINDYTCPCHANNEL') do begin RegisterProperty('INDYCLIENT', 'TIdTCPClientBaseClass', iptr); end; end; procedure SIRegisterTIDTCPCLIENT(CL: TIFPSPascalCompiler); begin with RegClassS(cl, 'TCOMPONENT', 'TIdTCPClientBaseClass') do begin RegisterProperty('BOUNDPORTMAX', 'INTEGER', iptrw); RegisterProperty('BOUNDPORTMIN', 'INTEGER', iptrw); RegisterProperty('BOUNDIP', 'STRING', iptrw); RegisterProperty('BOUNDPORT', 'INTEGER', iptrw); RegisterProperty('HOST', 'STRING', iptrw); RegisterProperty('PORT', 'INTEGER', iptrw); end; end; procedure SIRegisterRODLImports(Cl: TIFPSPascalCompiler); begin SIRegisterTIDTCPCLIENT(Cl); SIRegisterTROINDYTCPCHANNEL(Cl); SIRegisterTROINDYHTTPCHANNEL(Cl); SIRegisterTROBINMESSAGE(Cl); //SIRegisterTROSOAPMESSAGE(Cl); end; { TPSROIndyTCPModule } class procedure TPSROIndyTCPModule.CompImp(comp: TIFPSPascalCompiler); begin SIRegisterTIDTCPCLIENT(Comp); SIRegisterTROINDYTCPCHANNEL(Comp); end; class procedure TPSROIndyTCPModule.ExecImp(exec: TIFPSExec; ri: TIFPSRuntimeClassImporter); begin RIRegisterTIDTCPCLIENT(ri); RIRegisterTROINDYTCPCHANNEL(ri); end; { TPSROIndyHTTPModule } class procedure TPSROIndyHTTPModule.CompImp(comp: TIFPSPascalCompiler); begin if Comp.FindClass('TROINDYTCPCHANNEL') = nil then TPSROIndyTCPModule.CompImp(Comp); SIRegisterTROINDYHTTPCHANNEL(Comp); end; class procedure TPSROIndyHTTPModule.ExecImp(exec: TIFPSExec; ri: TIFPSRuntimeClassImporter); begin if ri.FindClass('TROINDYTCPCHANNEL') = nil then TPSROIndyTCPModule.ExecImp(exec, ri); RIRegisterTROINDYHTTPCHANNEL(ri); end; { TPSROSoapModule } {class procedure TPSROSoapModule.CompImp(comp: TIFPSPascalCompiler); begin SIRegisterTROSOAPMESSAGE(comp); end; class procedure TPSROSoapModule.ExecImp(exec: TIFPSExec; ri: TIFPSRuntimeClassImporter); begin RIRegisterTROSOAPMESSAGE(ri); end;} { TPSROBinModule } class procedure TPSROBinModule.CompImp(comp: TIFPSPascalCompiler); begin SIRegisterTROBINMESSAGE(Comp); end; class procedure TPSROBinModule.ExecImp(exec: TIFPSExec; ri: TIFPSRuntimeClassImporter); begin RIRegisterTROBINMESSAGE(ri); end; end.