diff --git a/source/adios2/toolkit/transport/Transport.h b/source/adios2/toolkit/transport/Transport.h
index cfca583afcf3167196edd1888803971270473c24..a85760343b1bdac0968c1a9127553d9627947a37 100644
--- a/source/adios2/toolkit/transport/Transport.h
+++ b/source/adios2/toolkit/transport/Transport.h
@@ -72,6 +72,13 @@ public:
      */
     virtual void Write(const char *buffer, size_t size) = 0;
 
+    /**
+     * Reads from file stream
+     * @param buffer raw data to read from file stream
+     * @param size number of bytes to read from file stream
+     */
+    virtual void Read(char *buffer, size_t size) = 0;
+
     /** flushes current contents to physical medium without closing */
     virtual void Flush() = 0;
 
diff --git a/source/adios2/toolkit/transport/file/FileDescriptor.cpp b/source/adios2/toolkit/transport/file/FileDescriptor.cpp
index 879ca2b702f71392d3137a73f16f6b45c9101778..6d36ed55c4872ca7d27296ad65c2eab64934a486 100644
--- a/source/adios2/toolkit/transport/file/FileDescriptor.cpp
+++ b/source/adios2/toolkit/transport/file/FileDescriptor.cpp
@@ -159,6 +159,11 @@ void FileDescriptor::Write(const char *buffer, size_t size)
     }
 }
 
+void FileDescriptor::Read(char *buffer, size_t size)
+{
+    // TODO: Implement read function
+}
+
 void FileDescriptor::Flush() {}
 
 void FileDescriptor::Close()
diff --git a/source/adios2/toolkit/transport/file/FileDescriptor.h b/source/adios2/toolkit/transport/file/FileDescriptor.h
index fe010c6e3516e553da9f5fbb8f8793666191d176..79aea45e0ec144c4bd3e5e9b93bded08275b836e 100644
--- a/source/adios2/toolkit/transport/file/FileDescriptor.h
+++ b/source/adios2/toolkit/transport/file/FileDescriptor.h
@@ -32,6 +32,8 @@ public:
 
     void Write(const char *buffer, size_t size) final;
 
+    void Read(char *buffer, size_t size) final;
+
     /** Does nothing, each write is supposed to flush */
     void Flush() final;
 
diff --git a/source/adios2/toolkit/transport/file/FilePointer.cpp b/source/adios2/toolkit/transport/file/FilePointer.cpp
index e11c4f9fb9dc17a6118f4cec5d8fc6f933061eb8..a01e2215fba3c050b83d9f82a5ffe579dd9d0c85 100644
--- a/source/adios2/toolkit/transport/file/FilePointer.cpp
+++ b/source/adios2/toolkit/transport/file/FilePointer.cpp
@@ -136,6 +136,11 @@ void FilePointer::Write(const char *buffer, size_t size)
     }
 }
 
+void FilePointer::Read(char *buffer, size_t size)
+{
+    // TODO: Implement read function
+}
+
 void FilePointer::Flush()
 {
     const int status = std::fflush(m_File);
diff --git a/source/adios2/toolkit/transport/file/FilePointer.h b/source/adios2/toolkit/transport/file/FilePointer.h
index 6d1521a3d5d99fff26f00806871194f9461fa5a8..885dfeba4e0ca0f5b6d52abec9e43999843a1b76 100644
--- a/source/adios2/toolkit/transport/file/FilePointer.h
+++ b/source/adios2/toolkit/transport/file/FilePointer.h
@@ -39,6 +39,8 @@ public:
 
     void Write(const char *buffer, size_t size) final;
 
+    void Read(char *buffer, size_t size) final;
+
     void Flush() final;
 
     void Close() final;
diff --git a/source/adios2/toolkit/transport/file/FileStream.cpp b/source/adios2/toolkit/transport/file/FileStream.cpp
index 3609394539420b2a3c3333bc31506f45b05b76a7..ff035299e3a3dc6faf05005614f0bd1ba168c462 100644
--- a/source/adios2/toolkit/transport/file/FileStream.cpp
+++ b/source/adios2/toolkit/transport/file/FileStream.cpp
@@ -115,6 +115,11 @@ void FileStream::Write(const char *buffer, size_t size)
     }
 }
 
+void FileStream::Read(char *buffer, size_t size)
+{
+    // TODO: Implement read function
+}
+
 void FileStream::Flush()
 {
     m_FileStream.flush();
diff --git a/source/adios2/toolkit/transport/file/FileStream.h b/source/adios2/toolkit/transport/file/FileStream.h
index 21df05a7241511128bd107db6799945155ac143c..9443220cd6256e4fb5d154451ded19ee926d2125 100644
--- a/source/adios2/toolkit/transport/file/FileStream.h
+++ b/source/adios2/toolkit/transport/file/FileStream.h
@@ -36,6 +36,8 @@ public:
 
     void Write(const char *buffer, size_t size) final;
 
+    void Read(char *buffer, size_t size) final;
+
     void Flush() final;
 
     void Close() final;
diff --git a/source/adios2/toolkit/transport/wan/WANZmq.cpp b/source/adios2/toolkit/transport/wan/WANZmq.cpp
index 9d9e3644108dc94fb96816ccdb034be9d15450e5..7d002374db9377b786eb74b1d83506fe7bda9a74 100644
--- a/source/adios2/toolkit/transport/wan/WANZmq.cpp
+++ b/source/adios2/toolkit/transport/wan/WANZmq.cpp
@@ -148,6 +148,11 @@ void WANZmq::Write(const char *buffer, size_t size)
     */
 }
 
+void WANZmq::Read(char *buffer, size_t size)
+{
+    // TODO: Implement read function
+}
+
 void WANZmq::Flush() {}
 
 void WANZmq::Close()
diff --git a/source/adios2/toolkit/transport/wan/WANZmq.h b/source/adios2/toolkit/transport/wan/WANZmq.h
index 167814b4f84fbec00f78f16c46c1d2e2503db2b6..692d70b016bf6a04c889a2d995bc3ffa29c1286c 100644
--- a/source/adios2/toolkit/transport/wan/WANZmq.h
+++ b/source/adios2/toolkit/transport/wan/WANZmq.h
@@ -40,6 +40,8 @@ public:
 
     void Write(const char *buffer, size_t size) final;
 
+    void Read(char *buffer, size_t size) final;
+
     void Flush() final;
 
     void Close() final;