/* * Copyright 2020 The WebRTC Project Authors. All rights reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree.
*/
// A StunDictionaryView is a dictionary of StunAttributes. // - the StunAttributes can be read using the |Get|-methods. // - the dictionary is updated by using the |ApplyDelta|-method. // // A StunDictionaryWriter is used to create |delta|s for the |ApplyDelta|-method // - It keeps track of which updates has been applied at StunDictionaryView. // - It optionally keeps a local StunDictionaryView contains modification made // `locally` // // A pair StunDictionaryView(A)/StunDictionaryWriter(B) are linked so that // modifications to B is transfered to A using the STUN_ATTR_GOOG_DELTA // (StunByteStringAttribute) and the modification is ack:ed using // STUN_ATTR_GOOG_DELTA_ACK (StunUInt64Attribute). // // Note: // 1) It is possible to update one StunDictionaryView from multiple writers, // but this only works of the different writers write disjoint keys (which // is not checked/enforced by these classes). // 2) The opposite, one writer updating multiple StunDictionaryView, is not // possible. class StunDictionaryView { public: // A reserved key used to transport the version number static constexpr uint16_t kVersionKey = 0xFFFF;
// A magic number used when transporting deltas. static constexpr uint16_t kDeltaMagic = 0x7788;
// The version number for the delta format. static constexpr uint16_t kDeltaVersion = 0x1;
// Gets the desired attribute value, or NULL if no such attribute type exists. // The pointer returned is guaranteed to be valid until ApplyDelta is called. const StunAddressAttribute* GetAddress(int key) const; const StunUInt32Attribute* GetUInt32(int key) const; const StunUInt64Attribute* GetUInt64(int key) const; const StunByteStringAttribute* GetByteString(int key) const; const StunUInt16ListAttribute* GetUInt16List(int key) const;
// Apply a delta and return // a pair with // - StunUInt64Attribute to ack the |delta|. // - vector of keys that was modified.
webrtc::RTCErrorOr<
std::pair<std::unique_ptr<StunUInt64Attribute>, std::vector<uint16_t>>>
ApplyDelta(const StunByteStringAttribute& delta);
// Disable writer, // i.e CreateDelta always return null, and no modifications are made. // This is called if remote peer does not support GOOG_DELTA. void Disable(); bool disabled() const { return disabled_; }
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.