summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS2/JAWS/FILE.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS2/JAWS/FILE.cpp')
-rw-r--r--ACE/apps/JAWS2/JAWS/FILE.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/ACE/apps/JAWS2/JAWS/FILE.cpp b/ACE/apps/JAWS2/JAWS/FILE.cpp
new file mode 100644
index 00000000000..5467f50e606
--- /dev/null
+++ b/ACE/apps/JAWS2/JAWS/FILE.cpp
@@ -0,0 +1,73 @@
+// $Id$
+
+#include "ace/Guard_T.h"
+
+#include "JAWS/FILE.h"
+
+
+JAWS_FILE::JAWS_FILE (void)
+ : map_ (0)
+{
+}
+
+JAWS_FILE::~JAWS_FILE (void)
+{
+ delete this->map_;
+ this->map_ = 0;
+}
+
+ACE_Mem_Map *
+JAWS_FILE::mem_map (int length,
+ int prot,
+ int share,
+ void *addr,
+ ACE_OFF_T offset,
+ LPSECURITY_ATTRIBUTES sa) const
+{
+ JAWS_FILE *mutable_this = (JAWS_FILE *) this;
+ return mutable_this->mem_map (length, prot, share, addr, offset, sa);
+}
+
+ACE_Mem_Map *
+JAWS_FILE::mem_map (int length,
+ int prot,
+ int share,
+ void *addr,
+ ACE_OFF_T offset,
+ LPSECURITY_ATTRIBUTES sa)
+{
+ if (this->map_ == 0)
+ {
+ ACE_Guard<ACE_SYNCH_MUTEX> g (this->lock_);
+
+ if (this->map_ == 0)
+ {
+ this->map_ = new ACE_Mem_Map;
+ if (this->map_ != 0)
+ {
+ int r = this->map_->map (this->get_handle (),
+ static_cast<size_t> (length),
+ prot,
+ share,
+ addr,
+ offset,
+ sa);
+ if (r < 0)
+ {
+ delete this->map_;
+ this->map_ = 0;
+ }
+ }
+ }
+ }
+
+ return this->map_;
+
+}
+
+
+ACE_Mem_Map *
+JAWS_FILE::map (void) const
+{
+ return this->map_;
+}