- /*
- * Copyright 1995, 1996 Perforce Software. All rights reserved.
- *
- * This file is part of Perforce - the FAST SCM System.
- */
- /*
- * handler.h - last chance handlers to keep track of loose objects
- *
- * Handlers provide a way of associating an object with a string so
- * context can be retained across RPC dispatched function calls.
- * This is used for file transfers, which are carried out in a series
- * of RPC calls. The sender picks a handle name and then uses that
- * consistenly during the transfer. The receiver uses the provided handle
- * name to stash and retrieve the object the represents the open file.
- *
- * Handlers also provide a means of tracking across objects. If any
- * object encounters an error, it can mark the handle so that a subsequent
- * call to AnyErrors() can report so.
- *
- * Public classes:
- *
- * Handlers - a list of LastChance objects
- * LastChance - a virtual base class that gets deleted with the
- * handlers.
- */
- class LastChance;
- struct Handler {
- StrBuf name;
- int anyErrors;
- LastChance *lastChance;
- } ;
- class LastChance {
- public:
- LastChance()
- {
- handler = 0;
- isError = 0;
- }
- virtual ~LastChance();
- void Install( Handler *h )
- {
- handler = h;
- handler->lastChance = this;
- }
- void SetError()
- {
- isError = 1;
- }
- void SetError( Error *e )
- {
- if( e->Test() ) isError = 1;
- }
- int IsError()
- {
- return isError;
- }
- private:
- Handler *handler;
- int isError;
- } ;
- const int maxHandlers = 10;
- class Handlers {
- public:
- Handlers();
- ~Handlers();
- void Install( const StrPtr *name,
- LastChance *lastChance,
- Error *e );
- LastChance * Get( const StrPtr *name, Error *e = 0 );
- int AnyErrors( const StrPtr *nane );
- void SetError( const StrPtr *name, Error *e );
- private:
- int numHandlers;
- Handler table[maxHandlers];
- Handler *Find( const StrPtr *handle, Error *e = 0 );
- } ;
# | 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 |