summaryrefslogtreecommitdiff
path: root/TAO/tests/File_IO/File_i.h
blob: 62327714b8284889c070e52903f2c72c33b67c68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92

//=============================================================================
/**
 *  @file     File_i.h
 *
 *    Defines the implementation classes for the File IDL
 *   module
 *
 *  @author  Irfan Pyarali
 */
//=============================================================================


#include "FileS.h"

/**
 * @class FileImpl
 *
 * @brief FileImpl class provides the namespace for the File IDL module .
 */
class FileImpl
{
public:
  /**
   * @class Descriptor
   *
   * @brief Descriptor implements the Descriptor interface in the File
   * Module A single Descriptor servant can serve multiple object
   * references
   */
  class Descriptor : public POA_File::Descriptor
  {
  public:
    /// Constructor
    Descriptor (PortableServer::POA_ptr poa);

    /// Destructor
    ~Descriptor (void);

    /// Returns the default POA of this object
    PortableServer::POA_ptr _default_POA (void);

    /// write buffer to File corresponding to this Descriptor
    virtual CORBA::Long write (const File::Descriptor::DataBuffer &buffer);

    virtual File::Descriptor::DataBuffer *read (CORBA::Long num_bytes);

    /// seek to the offset in file from whence
    virtual CORBA::ULong lseek (CORBA::ULong offset,
                                CORBA::Long whence);

    /// closes the file corresponding to the requested ObjectID
    virtual void destroy (void);

  private:
    /// Extracts the ACE_HANDLE from the objectID
    ACE_HANDLE fd (void);

    PortableServer::POA_var poa_;
  };

  /**
   * @class System
   *
   * @brief File System implementation class.
   */
  class System : public POA_File::System
  {
  public:
    /// Constructor, Creates a single File Descriptor Servant and
    /// registers it with the POA as the Default Servant
    System (PortableServer::POA_ptr poa);

    ///Destructor
    ~System (void);

    ///Returns the default POA of this object
    PortableServer::POA_ptr _default_POA (void);

    /// Opens a file ,creates a Descriptor reference with the
    /// ACE_HANDLE and returns that reference
    File::Descriptor_ptr open (const char *file_name,
                               CORBA::Long flags);

  private:
    PortableServer::POA_var poa_;

    /// The single File Descriptor servant which serves requests for
    /// any Descriptor object under poa_.
    Descriptor fd_servant_;
  };
};