[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/livekit/client-sdk-cpp/main/src/data_track_schema.cpp [Back]  [Original]

/*
 * Copyright 2026 LiveKit
 *
 * Licensed 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.
 */

#include "data_track_proto_converter.h"

namespace livekit {

proto::DataTrackSchemaEncoding toProto(const DataTrackSchemaEncoding& in) {
  proto::DataTrackSchemaEncoding out;
  if (in.isCustom()) {
    out.set_custom(in.customIdentifier());
    return out;
  }
  switch (in.wellKnown()) {
    case DataTrackSchemaEncoding::Protobuf:
      out.set_well_known(proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_PROTOBUF);
      break;
    case DataTrackSchemaEncoding::Flatbuffer:
      out.set_well_known(proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_FLATBUFFER);
      break;
    case DataTrackSchemaEncoding::Ros1Msg:
      out.set_well_known(proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_ROS1_MSG);
      break;
    case DataTrackSchemaEncoding::Ros2Msg:
      out.set_well_known(proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_ROS2_MSG);
      break;
    case DataTrackSchemaEncoding::Ros2Idl:
      out.set_well_known(proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_ROS2_IDL);
      break;
    case DataTrackSchemaEncoding::OmgIdl:
      out.set_well_known(proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_OMG_IDL);
      break;
    case DataTrackSchemaEncoding::JsonSchema:
      out.set_well_known(proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_JSON_SCHEMA);
      break;
    case DataTrackSchemaEncoding::Other:
      out.set_well_known(proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_UNSPECIFIED);
      break;
  }
  return out;
}

DataTrackSchemaEncoding fromProto(const proto::DataTrackSchemaEncoding& in) {
  if (in.encoding_case() == proto::DataTrackSchemaEncoding::kCustom) {
    return DataTrackSchemaEncoding::custom(in.custom());
  }
  switch (in.well_known()) {
    case proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_PROTOBUF:
      return DataTrackSchemaEncoding::Protobuf;
    case proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_FLATBUFFER:
      return DataTrackSchemaEncoding::Flatbuffer;
    case proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_ROS1_MSG:
      return DataTrackSchemaEncoding::Ros1Msg;
    case proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_ROS2_MSG:
      return DataTrackSchemaEncoding::Ros2Msg;
    case proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_ROS2_IDL:
      return DataTrackSchemaEncoding::Ros2Idl;
    case proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_OMG_IDL:
      return DataTrackSchemaEncoding::OmgIdl;
    case proto::DataTrackSchemaEncoding::WELL_KNOWN_SCHEMA_ENCODING_JSON_SCHEMA:
      return DataTrackSchemaEncoding::JsonSchema;
    default:
      return DataTrackSchemaEncoding::Other;
  }
}

proto::DataTrackFrameEncoding toProto(const DataTrackFrameEncoding& in) {
  proto::DataTrackFrameEncoding out;
  if (in.isCustom()) {
    out.set_custom(in.customIdentifier());
    return out;
  }
  switch (in.wellKnown()) {
    case DataTrackFrameEncoding::Ros1:
      out.set_well_known(proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_ROS1);
      break;
    case DataTrackFrameEncoding::Cdr:
      out.set_well_known(proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_CDR);
      break;
    case DataTrackFrameEncoding::Protobuf:
      out.set_well_known(proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_PROTOBUF);
      break;
    case DataTrackFrameEncoding::Flatbuffer:
      out.set_well_known(proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_FLATBUFFER);
      break;
    case DataTrackFrameEncoding::Cbor:
      out.set_well_known(proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_CBOR);
      break;
    case DataTrackFrameEncoding::Msgpack:
      out.set_well_known(proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_MSGPACK);
      break;
    case DataTrackFrameEncoding::Json:
      out.set_well_known(proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_JSON);
      break;
    case DataTrackFrameEncoding::Other:
      out.set_well_known(proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_UNSPECIFIED);
      break;
  }
  return out;
}

DataTrackFrameEncoding fromProto(const proto::DataTrackFrameEncoding& in) {
  if (in.encoding_case() == proto::DataTrackFrameEncoding::kCustom) {
    return DataTrackFrameEncoding::custom(in.custom());
  }
  switch (in.well_known()) {
    case proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_ROS1:
      return DataTrackFrameEncoding::Ros1;
    case proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_CDR:
      return DataTrackFrameEncoding::Cdr;
    case proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_PROTOBUF:
      return DataTrackFrameEncoding::Protobuf;
    case proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_FLATBUFFER:
      return DataTrackFrameEncoding::Flatbuffer;
    case proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_CBOR:
      return DataTrackFrameEncoding::Cbor;
    case proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_MSGPACK:
      return DataTrackFrameEncoding::Msgpack;
    case proto::DataTrackFrameEncoding::WELL_KNOWN_FRAME_ENCODING_JSON:
      return DataTrackFrameEncoding::Json;
    default:
      return DataTrackFrameEncoding::Other;
  }
}

proto::DataTrackSchemaId toProto(const DataTrackSchemaId& in) {
  proto::DataTrackSchemaId out;
  out.set_name(in.name);
  *out.mutable_encoding() = toProto(in.encoding);
  return out;
}

DataTrackSchemaId fromProto(const proto::DataTrackSchemaId& in) {
  DataTrackSchemaId out;
  out.name = in.name();
  out.encoding = fromProto(in.encoding());
  return out;
}

DataTrackInfo fromProto(const proto::DataTrackInfo& in) {
  DataTrackInfo out;
  out.name = in.name();
  out.sid = in.sid();
  out.uses_e2ee = in.uses_e2ee();
  if (in.has_schema()) {
    out.schema = fromProto(in.schema());
  }
  if (in.has_frame_encoding()) {
    out.frame_encoding = fromProto(in.frame_encoding());
  }
  return out;
}

} // namespace livekit

Web Proxy Viewer  |  New URL  |  Original Page