/* * 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 | 19640 | Liz Lam | "Forking branch Main of perforce-software-p4connect to liz_lam-p4connect." | ||
//guest/perforce_software/p4connect/main/src/P4Bridge/p4api/include/p4/handler.h | |||||
#1 | 16209 | Norman Morse | Move entire source tree into "main" branch so workshop code will act correctly. | ||
//guest/perforce_software/p4connect/src/P4Bridge/p4api/include/p4/handler.h | |||||
#2 | 12135 | Norman Morse |
Integrate dev branch changes into main. This code is the basiis of the 2.7 BETA release which provides Unity 5 compatibility |
||
#1 | 10940 | Norman Morse |
Inital Workshop release of P4Connect. Released under BSD-2 license |