blob: 94cc0ee553cca1f4968b42062364cd217ae29d31 [file] [log] [blame]
/*!
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import config from '../../../config/AgentConfig';
import { KeyStringValuePair } from '../../../proto/common/Common_pb';
import Segment from '../../../trace/context/Segment';
import {
Log,
RefType,
SegmentObject,
SegmentReference,
SpanObject,
} from '../../../proto/language-agent/Tracing_pb';
/**
* An adapter that adapts {@link Segment} objects to gRPC object {@link SegmentObject}.
*/
export default class SegmentObjectAdapter extends SegmentObject {
constructor(segment: Segment) {
super();
super
.setService(config.serviceName)
.setServiceinstance(config.serviceInstance)
.setTraceid(segment.relatedTraces[0].toString())
.setTracesegmentid(segment.segmentId.toString())
.setSpansList(
segment.spans.map((span) =>
new SpanObject()
.setSpanid(span.id)
.setParentspanid(span.parentId)
.setStarttime(span.startTime)
.setEndtime(span.endTime)
.setOperationname(span.operation)
.setPeer(span.peer)
.setSpantype(span.type)
.setSpanlayer(span.layer)
.setComponentid(span.component.id)
.setIserror(span.errored)
.setLogsList(
span.logs.map((log) =>
new Log()
.setTime(log.timestamp)
.setDataList(
log.items.map((logItem) =>
new KeyStringValuePair()
.setKey(logItem.key)
.setValue(logItem.val)),
),
),
)
.setTagsList(
span.tags.map((tag) =>
new KeyStringValuePair()
.setKey(tag.key)
.setValue(tag.val),
),
)
.setRefsList(
span.refs.map((ref) =>
new SegmentReference()
.setReftype(RefType.CROSSPROCESS)
.setTraceid(ref.traceId.toString())
.setParenttracesegmentid(ref.segmentId.toString())
.setParentspanid(ref.spanId)
.setParentservice(ref.service)
.setParentserviceinstance(ref.serviceInstance)
.setNetworkaddressusedatpeer(ref.clientAddress),
),
),
),
);
}
}