Use FileReadyMsg* as the application's handle to a given file, and hide its internals
authorPhil Miller <mille121@illinois.edu>
Tue, 9 Jul 2013 22:42:14 +0000 (17:42 -0500)
committerPhil Miller <mille121@illinois.edu>
Tue, 20 Aug 2013 23:28:43 +0000 (18:28 -0500)
src/libs/ck-libs/io/ckio.C
src/libs/ck-libs/io/ckio.h

index 60469fba982ae588e28b42f5bd370c86f9fd6057..ea89167b4e5b282bfa8ec5a783f658e13f1a1a38 100644 (file)
@@ -1,4 +1,5 @@
 #include <string>
+typedef int FileToken;
 #include "CkIO.decl.h"
 #include <ckio.h>
 #include <errno.h>
@@ -33,7 +34,6 @@ ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
 #endif
 
 namespace Ck { namespace IO {
-
     namespace impl {
       CProxy_Director director;
       Manager *manager;
@@ -51,6 +51,12 @@ namespace Ck { namespace IO {
       { }
     };
 
+    class FileReadyMsg : public CMessage_FileReadyMsg {
+    public:
+      FileToken token;
+      FileReadyMsg(const FileToken &tok) : token(tok) {}
+    };
+
     namespace impl {
       using std::min;
       using std::max;
@@ -313,9 +319,9 @@ namespace Ck { namespace IO {
       impl::director.openFile(name, opened, opts);
     }
 
-    void startSession(FileToken token, size_t bytes, size_t offset,
+    void startSession(FileReadyMsg *file, size_t bytes, size_t offset,
                       CkCallback ready, CkCallback complete) {
-      impl::director.prepareWriteSession(token, bytes, offset, ready, complete);
+      impl::director.prepareWriteSession(file->token, bytes, offset, ready, complete);
     }
 
     void write(SessionReadyMsg *session,
@@ -323,8 +329,8 @@ namespace Ck { namespace IO {
       impl::manager->write(session, data, bytes, offset);
     }
 
-    void close(FileToken token, CkCallback closed) {
-      impl::director.close(token, closed);
+    void close(FileReadyMsg *file, CkCallback closed) {
+      impl::director.close(file->token, closed);
     }
 
     class SessionCommitMsg : public CMessage_SessionCommitMsg {
index d99527de9950bf85a7676871e9d4dbac9cced02f..d626cc45c77de6652392f7a64246532714daf905 100644 (file)
@@ -5,8 +5,7 @@
 #include <pup_stl.h>
 
 namespace Ck { namespace IO {
-  /// Identifier for a file to be accessed
-  typedef int FileToken;
+  class FileReadyMsg;
   class SessionReadyMsg;
 
   struct Options {
@@ -34,8 +33,6 @@ namespace Ck { namespace IO {
     }
   };
 
-  struct FileReadyMsg;
-
   /// Open the named file on the selected subset of PEs, and send a
   /// FileReadyMsg to the opened callback when the system is ready to accept
   /// session requests on that file.
@@ -46,7 +43,7 @@ namespace Ck { namespace IO {
   /// SessionReadyMsg will be sent to the ready callback. When all of the data
   /// has been written and synced, a message will be sent to the complete
   /// callback.
-  void startSession(FileToken token, size_t bytes, size_t offset,
+  void startSession(FileReadyMsg *file, size_t bytes, size_t offset,
                     CkCallback ready, CkCallback complete);
 
   /// Write the given data into the file to which session is attached. The
@@ -55,11 +52,6 @@ namespace Ck { namespace IO {
 
   /// Close a previously-opened file. All sessions on that file must have
   /// already signalled that they are complete.
-  void close(FileToken token, CkCallback closed);
-
-  struct FileReadyMsg : public CMessage_FileReadyMsg {
-    FileToken token;
-    FileReadyMsg(const FileToken &tok) : token(tok) {}
-  };
+  void close(FileReadyMsg *file, CkCallback closed);
 }}
 #endif