#include <chrono>
#include "common-protocol.hh"
Go to the source code of this file.
|
#define | WORKER_MAGIC_1 0x6e697863 |
|
#define | WORKER_MAGIC_2 0x6478696f |
|
#define | PROTOCOL_VERSION (1 << 8 | 38) |
|
#define | GET_PROTOCOL_MAJOR(x) |
|
#define | GET_PROTOCOL_MINOR(x) |
|
#define | STDERR_NEXT 0x6f6c6d67 |
|
#define | STDERR_READ 0x64617461 |
|
#define | STDERR_WRITE 0x64617416 |
|
#define | STDERR_LAST 0x616c7473 |
|
#define | STDERR_ERROR 0x63787470 |
|
#define | STDERR_START_ACTIVITY 0x53545254 |
|
#define | STDERR_STOP_ACTIVITY 0x53544f50 |
|
#define | STDERR_RESULT 0x52534c54 |
|
#define | DECLARE_WORKER_SERIALISER(T) |
|
#define | COMMA_ , |
|
◆ DECLARE_WORKER_SERIALISER
#define DECLARE_WORKER_SERIALISER |
( |
| T | ) |
|
Value: struct WorkerProto::Serialise< T > \
{ \
static T read(
const StoreDirConfig &
store, WorkerProto::ReadConn conn); \
static void write(
const StoreDirConfig &
store, WorkerProto::WriteConn conn,
const T &
t); \
};
ChunkedVector< std::string, 8192 > store
Definition lexer.l:1011
T t
Definition lexer.l:154
Declare a canonical serialiser pair for the worker protocol.
We specialise the struct merely to indicate that we are implementing the function for the given type.
Some sort of template<...>
must be used with the caller for this to be legal specialization syntax. See below for what that looks like in practice.
◆ GET_PROTOCOL_MAJOR
#define GET_PROTOCOL_MAJOR |
( |
| x | ) |
|
Value:
T x
Definition lexer.l:2648
◆ GET_PROTOCOL_MINOR
#define GET_PROTOCOL_MINOR |
( |
| x | ) |
|
◆ operator<<() [1/2]
Sink & nix::operator<< |
( |
Sink & | sink, |
|
|
WorkerProto::Op | op ) |
|
inline |
Convenience for sending operation codes.
- Todo
- Switch to using
WorkerProto::Serialise
instead probably. But this was not done at this time so there would be less churn.
◆ operator<<() [2/2]
std::ostream & nix::operator<< |
( |
std::ostream & | s, |
|
|
WorkerProto::Op | op ) |
|
inline |
Convenience for debugging.
- Todo
- Perhaps render known opcodes more nicely.