ddcp 0.2.4

Distributed decentralized database-to-database copy
@0xc9cb850366986f30;

struct Envelope {
    sender @0 :Text;
    contents @1 :Data;
}

struct Request {
    union {
        status @0 :Void;
        changes @1 :ChangesParams;
    }
}

struct ChangesParams {
    sinceVersion @0 :Int64;
}

struct Response {
    union {
        status @0 :DBStatus;
        changes @1 :ChangesResult;
    }
}

struct ChangesResult {
    siteId @0 :Data;
    changes @1 :List(Change);
}

struct DBStatus {
    siteId @0 :Data;
    dbVersion @1 :Int64;
}

struct NodeStatus {
    db @0 :DBStatus;
    key @1 :Text;
    route @2 :Data;
}

struct Change {
    table @0 :Text;
    pk @1 :Data;
    cid @2 :Text;
    val @3 :ChangeValue;
    colVersion @4 :Int64;
    dbVersion @5 :Int64;
    siteId @6 :Data;
    cl @7 :Int64;
    seq @8 :Int64;
}

struct ChangeValue {
    union {
        null @0 :Void;
        integer @1 :Int64;
        real @2 :Float64;
        text @3 :Text;
        blob @4 :Data;
    }
}