aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/worker-protocol.hh
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-17 13:40:46 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-06-19 12:08:23 -0400
commit9f69b7dee9fc6035b8aa0cc718f5e74af460d9aa (patch)
tree167c44235e63dd0ed73b7ee3497ee04ecccfda86 /src/libstore/worker-protocol.hh
parent4e8b495ad7dddabc35bf9d6afe3573426ffed15d (diff)
Create `worker_proto::{Read,Write}Conn`
Pass this around instead of `Source &` and `Sink &` directly. This will give us something to put the protocol version on once the time comes. To do this ergonomically, we need to expose `RemoteStore::Connection`, so do that too. Give it some more API docs while we are at it.
Diffstat (limited to 'src/libstore/worker-protocol.hh')
-rw-r--r--src/libstore/worker-protocol.hh34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/libstore/worker-protocol.hh b/src/libstore/worker-protocol.hh
index cd6801290..ff762c924 100644
--- a/src/libstore/worker-protocol.hh
+++ b/src/libstore/worker-protocol.hh
@@ -50,6 +50,28 @@ struct WorkerProto
enum struct Op : uint64_t;
/**
+ * A unidirectional read connection, to be used by the read half of the
+ * canonical serializers below.
+ *
+ * This currently is just a `Source &`, but more fields will be added
+ * later.
+ */
+ struct ReadConn {
+ Source & from;
+ };
+
+ /**
+ * A unidirectional write connection, to be used by the write half of the
+ * canonical serializers below.
+ *
+ * This currently is just a `Sink &`, but more fields will be added
+ * later.
+ */
+ struct WriteConn {
+ Sink & to;
+ };
+
+ /**
* Data type for canonical pairs of serialisers for the worker protocol.
*
* See https://en.cppreference.com/w/cpp/language/adl for the broader
@@ -75,8 +97,8 @@ struct WorkerProto
// This makes for a quicker debug cycle, as desired.
#if 0
{
- static T read(const Store & store, Source & from);
- static void write(const Store & store, Sink & out, const T & t);
+ static T read(const Store & store, ReadConn conn);
+ static void write(const Store & store, WriteConn conn, const T & t);
};
#endif
@@ -85,9 +107,9 @@ struct WorkerProto
* infer the type instead of having to write it down explicitly.
*/
template<typename T>
- static void write(const Store & store, Sink & out, const T & t)
+ static void write(const Store & store, WriteConn conn, const T & t)
{
- WorkerProto::Serialise<T>::write(store, out, t);
+ WorkerProto::Serialise<T>::write(store, conn, t);
}
};
@@ -171,8 +193,8 @@ inline std::ostream & operator << (std::ostream & s, WorkerProto::Op op)
*/
#define MAKE_WORKER_PROTO(T) \
struct WorkerProto::Serialise< T > { \
- static T read(const Store & store, Source & from); \
- static void write(const Store & store, Sink & out, const T & t); \
+ static T read(const Store & store, WorkerProto::ReadConn conn); \
+ static void write(const Store & store, WorkerProto::WriteConn conn, const T & t); \
};
template<>