XrdPosixCallBack.hh

Go to the documentation of this file.
00001 #ifndef __POSIX_CALLBACK_HH__
00002 #define __POSIX_CALLBACK_HH__
00003 /******************************************************************************/
00004 /*                                                                            */
00005 /*                   X r d P o s i x C a l l B a c k . h h                    */
00006 /*                                                                            */
00007 /* (c) 2010 by the Board of Trustees of the Leland Stanford, Jr., University  */
00008 /*                            All Rights Reserved                             */
00009 /*   Produced by Andrew Hanushevsky for Stanford University under contract    */
00010 /*              DE-AC02-76-SFO0515 with the Department of Energy              */
00011 /******************************************************************************/
00012 
00013 //         $Id: XrdPosixCallBack.hh 32231 2010-02-05 18:24:46Z ganis $
00014 
00015 // This abstract class defines the callback interface for file open() calls.
00016 // It is passed when using the XrdPosixXrootd::Open() call. When passed, the
00017 // open request will be done in the background. When a callback object is
00018 // supplied, Open() will *always* return -1. However, if started successfully,
00019 // Open() will return -1 with errno set to EINPROGRESS. Otherwise, errno will
00020 // contain the reason the Open() request immediately failed. Upon completion,
00021 // the callback's Compete() method is invoked.  The Result parameter will either
00022 // be a non-negative file descriptor or -errno indicating that the Open()
00023 // failed. Note that the caller is responsible for deleting the callback object
00024 // after it has been invoked. Note that callbacks will be executed in a
00025 // separate thread unless open() is called with O_SYNC or maxThreads is zero.
00026 // WARNING: If O_SYNC or maxThreads is zero, then the callback must *not*
00027 //          issue any filesystem calls using the supplied file descriptor.
00028 //          Ignoring this will produce undetermined results including possible
00029 //          deadlock. Synchrnous callbacks are only meant to support private
00030 //          thread management.
00031 
00032 class XrdPosixCallBack
00033 {
00034 public:
00035 
00036 virtual void Complete(int Result) = 0;
00037 
00038              XrdPosixCallBack() {}
00039 virtual     ~XrdPosixCallBack() {}
00040 };
00041 #endif

Generated on Tue Jul 5 14:46:57 2011 for ROOT_528-00b_version by  doxygen 1.5.1