/* -*- C++ -*- */ // $Id$ // ============================================================================ // // = LIBRARY // ace // // = FILENAME // FILE.h // // = AUTHOR // Gerhard Lenzer // // ============================================================================ #ifndef ACE_FILE_H #define ACE_FILE_H #include "ace/pre.h" #include "ace/IO_SAP.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #include "ace/FILE_Addr.h" // The following is necessary since many C++ compilers don't support // typedef'd types inside of classes used as formal template // arguments... ;-(. Luckily, using the C++ preprocessor I can hide // most of this nastiness! #if defined (ACE_HAS_TEMPLATE_TYPEDEFS) #define ACE_FILE_CONNECTOR ACE_FILE_Connector #define ACE_FILE_STREAM ACE_FILE_IO #else /* TEMPLATES are broken (must be a cfront-based compiler...) */ #define ACE_FILE_CONNECTOR ACE_FILE_Connector, ACE_FILE_Addr #define ACE_FILE_STREAM ACE_FILE_IO, ACE_FILE_Addr #endif /* ACE_TEMPLATE_TYPEDEFS */ class ACE_Export ACE_FILE_Info { // = TITLE // Abstracts basic OS FILE information. public: mode_t mode_; // mode of file nlink_t nlink_; // no of links off_t size_; // size of file }; class ACE_Export ACE_FILE : public ACE_IO_SAP { // = TITLE // Defines the core methods of the abstraction. public: int close (void); // Close the handle without removing the from // the file system. int remove (void); // Close and remove the from the file system. int unlink (void); // Remove the from the file system without closing the // handle. int get_info (ACE_FILE_Info *finfo); // Get information on this . int get_info (ACE_FILE_Info &finfo); // Get information on this . int truncate (off_t length); // Set filesize to length byte. off_t seek (off_t offset, int whence = SEEK_CUR); // Sets the file pointer as follows: // o If is , the pointer is set to // bytes. // // o If is , the pointer is set to its // current location plus . // // o If is , the pointer is set to the size // of the file plus offset. off_t position (long offset, int startpos); // Same as , but is deprecated. off_t tell (void); // Return an offset for the file handle. off_t position (void); // Same as , but is deprecated. int disable (int signum) const ; // Disable signal // This is here to prevent Win32 from // disabling SPIPE using socket calls int get_local_addr (ACE_Addr &) const; // Return the local endpoint address in the referenced . // Returns 0 if successful, else -1. int get_remote_addr (ACE_Addr &) const; // Return the same thing as . void dump (void) const; // Dump the state of an object. ACE_ALLOC_HOOK_DECLARE; // Declare the dynamic allocation hooks. protected: ACE_FILE (void); // Ensure that this class is only created by the // . ACE_FILE_Addr addr_; // File we are "connected" with... }; #if !defined (ACE_LACKS_INLINE_FUNCTIONS) #include "ace/FILE.i" #endif /* ACE_LACKS_INLINE_FUNCTIONS */ #include "ace/post.h" #endif /* ACE_FILE_H */