mirror of
https://github.com/matrix-construct/construct
synced 2024-07-05 10:08:36 +02:00
ircd:Ⓜ️ Add txn creation util.
This commit is contained in:
parent
4fa33bdc60
commit
2c4498502a
|
@ -28,6 +28,10 @@ struct ircd::m::txn
|
|||
json::property<name::pdus, json::array>
|
||||
>
|
||||
{
|
||||
using array = std::pair<const json::value *, size_t>;
|
||||
static string_view create_id(const mutable_buffer &out, const string_view &txn);
|
||||
static std::string create(const array &pdu, const array &edu, const array &pdu_failure = {});
|
||||
|
||||
using super_type::tuple;
|
||||
using super_type::operator=;
|
||||
};
|
||||
|
|
64
ircd/m/m.cc
64
ircd/m/m.cc
|
@ -1187,6 +1187,70 @@ ircd::m::exists(const id::room_alias &room_alias,
|
|||
return function(room_alias, remote_query);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// m/txn.h
|
||||
//
|
||||
|
||||
std::string
|
||||
ircd::m::txn::create(const array &pdu,
|
||||
const array &edu,
|
||||
const array &pdu_failure)
|
||||
{
|
||||
json::iov iov;
|
||||
const json::iov::push push[]
|
||||
{
|
||||
{ iov, { "origin", my_host() }},
|
||||
{ iov, { "origin_server_ts", ircd::time<milliseconds>() }},
|
||||
};
|
||||
|
||||
const json::iov::add_if _pdus
|
||||
{
|
||||
iov, pdu.second,
|
||||
{
|
||||
"pdus", { pdu.first, pdu.second }
|
||||
}
|
||||
};
|
||||
|
||||
const json::iov::add_if _edus
|
||||
{
|
||||
iov, edu.second,
|
||||
{
|
||||
"edus", { edu.first, edu.second }
|
||||
}
|
||||
};
|
||||
|
||||
const json::iov::add_if _pdu_failures
|
||||
{
|
||||
iov, pdu_failure.second,
|
||||
{
|
||||
"pdu_failures", { pdu_failure.first, pdu_failure.second }
|
||||
}
|
||||
};
|
||||
|
||||
return json::strung
|
||||
{
|
||||
iov
|
||||
};
|
||||
}
|
||||
|
||||
ircd::string_view
|
||||
ircd::m::txn::create_id(const mutable_buffer &out,
|
||||
const string_view &txn)
|
||||
{
|
||||
const sha256::buf hash
|
||||
{
|
||||
sha256{txn}
|
||||
};
|
||||
|
||||
const string_view txnid
|
||||
{
|
||||
b58encode(out, hash)
|
||||
};
|
||||
|
||||
return txnid;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// m/hook.h
|
||||
|
|
Loading…
Reference in a new issue