/* * 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 | 8331 | Matt Attaway |
Adding initial version of MacMenu for Perforce MacMenu is a helpful Perforce client that sits in your toolbar. It allows you to run standard Perforce operations on the document that is open the currently active editor/viewer. |