handler.h #1

  • //
  • guest/
  • perforce_software/
  • p4/
  • 2014-1/
  • support/
  • handler.h
  • View
  • Commits
  • Open Download .zip Download (2 KB)
/*
 * 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 15902 Matt Attaway A second renaming that I will not obliterate as a badge of shame
//guest/perforce_software/p4/2014_1/support/handler.h
#1 15901 Matt Attaway Clean up code to fit modern Workshop naming standards
//guest/perforce_software/p4/2014.1/support/handler.h
#1 12188 Matt Attaway Move 'main' p4 into a release specific directory in prep for new releases
//guest/perforce_software/p4/support/handler.h
#1 9129 Matt Attaway Initial commit of the 2014.1 p4/p4api source code