@@ -618,13 +618,49 @@ Log::Log(kj::Date timestamp, LogLevel logLevel, kj::String message)
618618 logLevel(logLevel),
619619 message(kj::mv(message)) {}
620620
621+ void Log::copyTo (rpc::Trace::Log::Builder builder) const {
622+ builder.setTimestampNs ((timestamp - kj::UNIX_EPOCH) / kj::NANOSECONDS);
623+ builder.setLogLevel (logLevel);
624+ builder.setMessage (message);
625+ }
626+
627+ Log Log::clone () const {
628+ return Log (timestamp, logLevel, kj::str (message));
629+ }
630+
621631Exception::Exception (
622632 kj::Date timestamp, kj::String name, kj::String message, kj::Maybe<kj::String> stack)
623633 : timestamp(timestamp),
624634 name(kj::mv(name)),
625635 message(kj::mv(message)),
626636 stack(kj::mv(stack)) {}
627637
638+ Log::Log (rpc::Trace::Log::Reader reader)
639+ : timestamp(kj::UNIX_EPOCH + reader.getTimestampNs() * kj::NANOSECONDS),
640+ logLevel(reader.getLogLevel()),
641+ message(kj::str(reader.getMessage())) {}
642+
643+ Exception::Exception (rpc::Trace::Exception::Reader reader)
644+ : timestamp(kj::UNIX_EPOCH + reader.getTimestampNs() * kj::NANOSECONDS),
645+ name(kj::str(reader.getName())),
646+ message(kj::str(reader.getMessage())) {
647+ if (reader.hasStack ()) {
648+ stack = kj::str (reader.getStack ());
649+ }
650+ }
651+
652+ void Exception::copyTo (rpc::Trace::Exception::Builder builder) const {
653+ builder.setTimestampNs ((timestamp - kj::UNIX_EPOCH) / kj::NANOSECONDS);
654+ builder.setName (name);
655+ builder.setMessage (message);
656+ KJ_IF_SOME (s, stack) {
657+ builder.setStack (s);
658+ }
659+ }
660+
661+ Exception Exception::clone () const {
662+ return Exception (timestamp, kj::str (name), kj::str (message), mapCopyString (stack));
663+ }
628664} // namespace tracing
629665
630666Trace::Trace (kj::Maybe<kj::String> stableId,
@@ -757,29 +793,6 @@ void Trace::copyTo(rpc::Trace::Builder builder) const {
757793 }
758794}
759795
760- void tracing::Log::copyTo (rpc::Trace::Log::Builder builder) const {
761- builder.setTimestampNs ((timestamp - kj::UNIX_EPOCH) / kj::NANOSECONDS);
762- builder.setLogLevel (logLevel);
763- builder.setMessage (message);
764- }
765-
766- tracing::Log tracing::Log::clone () const {
767- return Log (timestamp, logLevel, kj::str (message));
768- }
769-
770- void tracing::Exception::copyTo (rpc::Trace::Exception::Builder builder) const {
771- builder.setTimestampNs ((timestamp - kj::UNIX_EPOCH) / kj::NANOSECONDS);
772- builder.setName (name);
773- builder.setMessage (message);
774- KJ_IF_SOME (s, stack) {
775- builder.setStack (s);
776- }
777- }
778-
779- tracing::Exception tracing::Exception::clone () const {
780- return Exception (timestamp, kj::str (name), kj::str (message), mapCopyString (stack));
781- }
782-
783796void Trace::mergeFrom (rpc::Trace::Reader reader, PipelineLogLevel pipelineLogLevel) {
784797 // Sandboxed workers currently record their traces as if the pipeline log level were set to
785798 // "full", so we may need to filter out the extra data after receiving the traces back.
@@ -874,18 +887,6 @@ void Trace::mergeFrom(rpc::Trace::Reader reader, PipelineLogLevel pipelineLogLev
874887}
875888
876889namespace tracing {
877- Log::Log (rpc::Trace::Log::Reader reader)
878- : timestamp(kj::UNIX_EPOCH + reader.getTimestampNs() * kj::NANOSECONDS),
879- logLevel (reader.getLogLevel()),
880- message(kj::str(reader.getMessage())) {}
881- Exception::Exception (rpc::Trace::Exception::Reader reader)
882- : timestamp(kj::UNIX_EPOCH + reader.getTimestampNs() * kj::NANOSECONDS),
883- name(kj::str(reader.getName())),
884- message(kj::str(reader.getMessage())) {
885- if (reader.hasStack ()) {
886- stack = kj::str (reader.getStack ());
887- }
888- }
889890
890891Attribute::Attribute (kj::ConstString name, Value&& value)
891892 : name(kj::mv(name)),
@@ -902,6 +903,18 @@ kj::Array<Attribute::Value> readValues(const rpc::Trace::Attribute::Reader& read
902903 auto value = reader.getValue ();
903904 return KJ_MAP (v, value) { return deserializeTagValue (v); };
904905}
906+
907+ kj::Maybe<FetchResponseInfo> readReturnInfo (const rpc::Trace::Return::Reader& reader) {
908+ auto info = reader.getInfo ();
909+ switch (info.which ()) {
910+ case rpc::Trace::Return::Info::EMPTY:
911+ return kj::none;
912+ case rpc::Trace::Return::Info::FETCH: {
913+ return kj::Maybe (FetchResponseInfo (info.getFetch ()));
914+ }
915+ }
916+ KJ_UNREACHABLE;
917+ }
905918} // namespace
906919
907920Attribute::Attribute (rpc::Trace::Attribute::Reader reader)
@@ -925,21 +938,6 @@ kj::String Attribute::toString() const {
925938}
926939
927940Return::Return (kj::Maybe<FetchResponseInfo> info): info(kj::mv(info)) {}
928-
929- namespace {
930- kj::Maybe<FetchResponseInfo> readReturnInfo (const rpc::Trace::Return::Reader& reader) {
931- auto info = reader.getInfo ();
932- switch (info.which ()) {
933- case rpc::Trace::Return::Info::EMPTY:
934- return kj::none;
935- case rpc::Trace::Return::Info::FETCH: {
936- return kj::Maybe (FetchResponseInfo (info.getFetch ()));
937- }
938- }
939- KJ_UNREACHABLE;
940- }
941- } // namespace
942-
943941Return::Return (rpc::Trace::Return::Reader reader): info(readReturnInfo(reader)) {}
944942
945943void Return::copyTo (rpc::Trace::Return::Builder builder) const {
@@ -1452,6 +1450,52 @@ TailEvent TailEvent::clone() const {
14521450 return TailEvent (spanContext.getTraceId (), invocationId, spanContext.getSpanId (), timestamp,
14531451 sequence, cloneEvent (event));
14541452}
1453+
1454+ void CompleteSpan::copyTo (rpc::UserSpanData::Builder builder) const {
1455+ builder.setOperationName (operationName.asPtr ());
1456+ builder.setStartTimeNs ((startTime - kj::UNIX_EPOCH) / kj::NANOSECONDS);
1457+ builder.setEndTimeNs ((endTime - kj::UNIX_EPOCH) / kj::NANOSECONDS);
1458+ builder.setSpanId (spanId);
1459+ builder.setParentSpanId (parentSpanId);
1460+
1461+ auto tagsParam = builder.initTags (tags.size ());
1462+ auto i = 0 ;
1463+ for (auto & tag: tags) {
1464+ auto tagParam = tagsParam[i++];
1465+ tagParam.setKey (tag.key .asPtr ());
1466+ serializeTagValue (tagParam.initValue (), tag.value );
1467+ }
1468+ }
1469+
1470+ CompleteSpan::CompleteSpan (rpc::UserSpanData::Reader reader)
1471+ : spanId(reader.getSpanId()),
1472+ parentSpanId(reader.getParentSpanId()),
1473+ operationName(kj::str(reader.getOperationName())),
1474+ startTime(kj::UNIX_EPOCH + reader.getStartTimeNs() * kj::NANOSECONDS),
1475+ endTime(kj::UNIX_EPOCH + reader.getEndTimeNs() * kj::NANOSECONDS) {
1476+ auto tagsParam = reader.getTags ();
1477+ tags.reserve (tagsParam.size ());
1478+ for (auto tagParam: tagsParam) {
1479+ tags.insert (kj::ConstString (kj::heapString (tagParam.getKey ())),
1480+ deserializeTagValue (tagParam.getValue ()));
1481+ }
1482+ }
1483+
1484+ CompleteSpan CompleteSpan::clone () const {
1485+ CompleteSpan copy (
1486+ spanId, parentSpanId, kj::ConstString (kj::str (operationName)), startTime, endTime);
1487+ copy.tags .reserve (tags.size ());
1488+ for (auto & tag: tags) {
1489+ copy.tags .insert (kj::ConstString (kj::str (tag.key )), spanTagClone (tag.value ));
1490+ }
1491+ return copy;
1492+ }
1493+
1494+ kj::String CompleteSpan::toString () const {
1495+ return kj::str (" CompleteSpan: " , operationName,
1496+ kj::strArray (
1497+ KJ_MAP (tag, tags) { return kj::str (" (" , tag.key , " , " , tag.value , " )" ); }, " , " ));
1498+ }
14551499} // namespace tracing
14561500
14571501// ======================================================================================
@@ -1600,54 +1644,6 @@ Span::TagValue deserializeTagValue(RpcValue::Reader value) {
16001644 }
16011645}
16021646
1603- namespace tracing {
1604- void CompleteSpan::copyTo (rpc::UserSpanData::Builder builder) const {
1605- builder.setOperationName (operationName.asPtr ());
1606- builder.setStartTimeNs ((startTime - kj::UNIX_EPOCH) / kj::NANOSECONDS);
1607- builder.setEndTimeNs ((endTime - kj::UNIX_EPOCH) / kj::NANOSECONDS);
1608- builder.setSpanId (spanId);
1609- builder.setParentSpanId (parentSpanId);
1610-
1611- auto tagsParam = builder.initTags (tags.size ());
1612- auto i = 0 ;
1613- for (auto & tag: tags) {
1614- auto tagParam = tagsParam[i++];
1615- tagParam.setKey (tag.key .asPtr ());
1616- serializeTagValue (tagParam.initValue (), tag.value );
1617- }
1618- }
1619-
1620- CompleteSpan::CompleteSpan (rpc::UserSpanData::Reader reader)
1621- : spanId(reader.getSpanId()),
1622- parentSpanId (reader.getParentSpanId()),
1623- operationName(kj::str(reader.getOperationName())),
1624- startTime(kj::UNIX_EPOCH + reader.getStartTimeNs() * kj::NANOSECONDS),
1625- endTime(kj::UNIX_EPOCH + reader.getEndTimeNs() * kj::NANOSECONDS) {
1626- auto tagsParam = reader.getTags ();
1627- tags.reserve (tagsParam.size ());
1628- for (auto tagParam: tagsParam) {
1629- tags.insert (kj::ConstString (kj::heapString (tagParam.getKey ())),
1630- deserializeTagValue (tagParam.getValue ()));
1631- }
1632- }
1633-
1634- CompleteSpan CompleteSpan::clone () const {
1635- CompleteSpan copy (
1636- spanId, parentSpanId, kj::ConstString (kj::str (operationName)), startTime, endTime);
1637- copy.tags .reserve (tags.size ());
1638- for (auto & tag: tags) {
1639- copy.tags .insert (kj::ConstString (kj::str (tag.key )), spanTagClone (tag.value ));
1640- }
1641- return copy;
1642- }
1643-
1644- kj::String CompleteSpan::toString () const {
1645- return kj::str (" CompleteSpan: " , operationName,
1646- kj::strArray (
1647- KJ_MAP (tag, tags) { return kj::str (" (" , tag.key , " , " , tag.value , " )" ); }, " , " ));
1648- }
1649- } // namespace tracing
1650-
16511647ScopedDurationTagger::ScopedDurationTagger (
16521648 SpanBuilder& span, kj::ConstString key, const kj::MonotonicClock& timer)
16531649 : span(span),
0 commit comments