- /*
- * Copyright 1995, 2000 Perforce Software. All rights reserved.
- *
- * This file is part of Perforce - the FAST SCM System.
- */
- # include "stdhdrs.h"
- # include "strbuf.h"
- # include "strdict.h"
- # include "error.h"
- # include "handler.h"
- # include "filesys.h"
- # include "p4tags.h"
- # include "clientmerge.h"
- # include "clientuser.h"
- # include "keepalive.h"
- /*
- * ClientApi - the Perforce client API
- *
- * Basic flow:
- *
- * ClientUser ui;
- * ClientApi client;
- *
- * // SetPort(), SetProtocol() must happen _before_ the Init().
- *
- * client.SetPort( somefunctionof( client.GetPort() ) ); //optional
- * client.SetProtocol( "var", "value" ); //optional
- *
- * client.Init( e );
- *
- * // GetClient(), SetBreak(), SetProg() must happen _after_ the Init().
- *
- * client.SetBreak( &k ); // optional
- *
- * client.SetProg( "MyApp" ); // optional
- *
- * client.SetVersion( "version" ); // optional
- *
- * client.SetClient( somefunctionof( client.GetClient() ) ); //optional
- * client.SetCwd( somefunctionof( client.GetCwd() ) ); //optional
- * client.SetUser( somefunctionof( client.GetUser() ) ); //optional
- *
- * while( !client.Dropped() )
- * {
- * client.SetArgv( argc, argv )
- * client.Run( func, &ui )
- * }
- *
- * return client.Final( e );
- *
- * Public methods:
- *
- * ClientApi::SetUi() - reset the ClientUser object used
- * ClientApi::SetProtocol() - ask for special server treatment
- * ClientApi::GetProtocol() - get a protocol capability
- * SetProtocol() is called before Init(); GetProtocol() after Run().
- *
- * ClientApi::Init() - establish connection and prepare to run commands.
- *
- * ClientApi::SetVar() - set variable
- * ClientApi::SetVarV() - set variable using var=value syntax
- * ClientApi::SetArgv() - set unnamed variables (args for Run())
- * ClientApi::GetVar() - get variable
- *
- * ClientApi::Run() - run a single command
- * ClientApi::Final() - clean up end of connection, returning error count.
- * ClientApi::Dropped() - check if connection is no longer serviceable
- * ClientApi::GetErrors() - get count of errors returned by server.
- *
- * ClientApi::RunTag() - run a single command (potentially) asynchronously.
- * ClientApi::WaitTag() - wait for a RunTag()/all RunTag()s to complete.
- *
- * ClientApi::SetCharset()
- * ClientApi::SetClient()
- * ClientApi::SetCwd()
- * ClientApi::SetHost()
- * ClientApi::SetLanguage()
- * ClientApi::SetPassword()
- * ClientApi::SetPort()
- * ClientApi::SetUser() - set client, current directory, host, port, or
- * user, overridding all defaults. SetPort() must be called
- * before Init() in order to take effect. The others must be
- * set before Run() to take effect.
- *
- * SetCwd() additionally searches for a new P4CONFIG file.
- *
- * ClientApi::SetBreak() - set a subclassed KeepAlive object (only
- * method IsAlive returns zero on dropped connection). Must
- * be called after Init() it order to take affect.
- *
- * ClientApi::SetProg() - set the name of the application program,
- * this will show up in 'p4 monitor' and server log output.
- * Must be called after Init() it order to take affect.
- *
- * ClientApi::SetVersion() - sets the version string of the application.
- * If not called, the version defaults to protocolClient. This
- * will be appended to the program name in 'p4 monitor' and
- * server log output. Like SetProg(), it must be called after
- * Init() to take effect.
- *
- * ClientApi::SetTicketFile() - set the location of the users ticketfile,
- * must be the full pathname to the file and not a directory.
- *
- * ClientApi::DefineCharset()
- * ClientApi::DefineClient()
- * ClientApi::DefineHost()
- * ClientApi::DefineLanguage()
- * ClientApi::DefinePassword()
- * ClientApi::DefinePort()
- * ClientApi::DefineUser() - sets client, port, or user in the registry
- * and (so as to take permanent effect) then calls SetClient(),
- * etc. to take immediate effect.
- *
- * ClientApi::GetCharset()
- * ClientApi::GetClient()
- * ClientApi::GetCwd()
- * ClientApi::GetHost()
- * ClientApi::GetLanguage()
- * ClientApi::GetOs()
- * ClientApi::GetPassword()
- * ClientApi::GetPort()
- * ClientApi::GetUser() - get current directory, client, OS, port or user,
- * as determined by defaults or by corresponding set value.
- * GetClient()/GetHost() are not valid until after Init()
- * establishes the connection, because the hostname of the
- * local endpoint may serve as the default client name.
- *
- * Client::GetConfig() - get the filename pointed to by P4CONFIG, as
- * determined by enviro::Config().
- *
- * ClientApi::SetIgnorePassword() - This function ignores passwords
- * that are found in the registry (NT), host environments or
- * configuration files. If this function is set then only
- * passwords supplied through SetPassword() will be honored.
- * Tickets continue to work as normal. Must be called before
- * Init() in order to take affect.
- */
- class Client;
- class ClientApi : public StrDict {
- public:
- // caller's main interface
- ClientApi();
- ~ClientApi();
- void SetTrans( int output, int content = -2,
- int fnames = -2, int dialog = -2 );
- void SetProtocol( const char *p, const char *v );
- void SetProtocolV( const char *p );
- StrPtr * GetProtocol( const char *v );
- void Init( Error *e );
- void Run( const char *func, ClientUser *ui );
- int Final( Error *e );
- int Dropped();
- int GetErrors();
- void RunTag( const char *func, ClientUser *ui );
- void WaitTag( ClientUser *ui = 0 );
- void SetCharset( const char *c );
- void SetClient( const char *c );
- void SetCwd( const char *c );
- void SetHost( const char *c );
- void SetLanguage( const char *c );
- void SetPassword( const char *c );
- void SetPort( const char *c );
- void SetUser( const char *c );
- void SetProg( const char *c );
- void SetVersion( const char *c );
- void SetTicketFile( const char *c );
- void SetCharset( const StrPtr *c );
- void SetClient( const StrPtr *c );
- void SetCwd( const StrPtr *c );
- void SetHost( const StrPtr *c );
- void SetLanguage( const StrPtr *c );
- void SetPassword( const StrPtr *c );
- void SetPort( const StrPtr *c );
- void SetUser( const StrPtr *c );
- void SetProg( const StrPtr *c );
- void SetVersion( const StrPtr *c );
- void SetTicketFile( const StrPtr *c );
- void SetBreak( KeepAlive *k );
- void DefineCharset( const char *c, Error *e );
- void DefineClient( const char *c, Error *e );
- void DefineHost( const char *c, Error *e );
- void DefineLanguage( const char *c, Error *e );
- void DefinePassword( const char *c, Error *e );
- void DefinePort( const char *c, Error *e );
- void DefineUser( const char *c, Error *e );
- const StrPtr &GetCharset();
- const StrPtr &GetClient();
- const StrPtr &GetCwd();
- const StrPtr &GetHost();
- const StrPtr &GetLanguage();
- const StrPtr &GetOs();
- const StrPtr &GetPassword();
- const StrPtr &GetPort();
- const StrPtr &GetUser();
- const StrPtr &GetConfig();
- void SetIgnorePassword();
- public:
- // The old interface, where ui was held from the start
- ClientApi( ClientUser *ui );
- void SetUi( ClientUser *i );
- void Run( const char *func );
- private:
- // Our StrDict implementation
- // Set strdict.h for various GetVar/SetVar calls
- StrPtr *VGetVar( const StrPtr &var );
- void VSetVar( const StrPtr &var, const StrPtr &val );
- private:
- Client *client; // wrapped up RPC
- ClientUser *ui; // the old way
- } ;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 7893 | Johan Nilsson | OFFLINE CHANGELIST 10 - SUBMITTED ON 2011/03/23 11:18:27 Upgrade project files to VS2010... and switching to msbuild for the entire project. Retargeted everything to .NET4 Client Profile for the time being, due to VS2010 C++ limitations (can't target anything other than 4.0 without complicating the setup too much). Shouldn't be too hard to retarget later if push comes to shove. Added VS2010 P4API stuff directly inside this project also to make things easier to get up and running for the moment. Removed old static P4API libraries. ____________________________________________________________ OFFLINE CHANGELIST 9 - SUBMITTED ON 2011/03/22 07:35:31 Converted to VS2010 « |
14 years ago |