/* * 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 | 18760 | rlranft |
Populate -o //guest/perforce_software/p4/... //guest/rlranft/p4/.... |
||
//guest/perforce_software/p4/2015-1/support/handler.h | |||||
#1 | 15903 | Matt Attaway | Everything should be happy now between the Workshop and the depot paths | ||
//guest/perforce_software/p4/2015_1/support/handler.h | |||||
#1 | 15901 | Matt Attaway | Clean up code to fit modern Workshop naming standards | ||
//guest/perforce_software/p4/2015.1/support/handler.h | |||||
#1 | 12190 | Matt Attaway | Initial drop of 2015.1 p4/p4api source |