blob: 8d569b36d245d7e615d932b09e2d83c575eb4643 [file] [log] [blame]
Jonas Orelandbdcee282017-10-10 12:01:401/*
2 * Copyright 2017 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Steve Anton10542f22019-01-11 17:11:0011#ifndef API_TURN_CUSTOMIZER_H_
12#define API_TURN_CUSTOMIZER_H_
Jonas Orelandbdcee282017-10-10 12:01:4013
14#include <stdlib.h>
15
Mirko Bonadei9d9c2d52022-10-07 21:47:4916#include "api/transport/stun.h"
17
Jonas Orelandbdcee282017-10-10 12:01:4018namespace cricket {
19class PortInterface;
Jonas Orelandbdcee282017-10-10 12:01:4020} // namespace cricket
21
Jonas Orelandbdcee282017-10-10 12:01:4022namespace webrtc {
23
24class TurnCustomizer {
25 public:
26 // This is called before a TURN message is sent.
27 // This could be used to add implementation specific attributes to a request.
28 virtual void MaybeModifyOutgoingStunMessage(
29 cricket::PortInterface* port,
30 cricket::StunMessage* message) = 0;
31
32 // TURN can send data using channel data messages or Send indication.
Artem Titov0e61fdd2021-07-25 19:50:1433 // This method should return false if `data` should be sent using
Jonas Orelandbdcee282017-10-10 12:01:4034 // a Send indication instead of a ChannelData message, even if a
35 // channel is bound.
36 virtual bool AllowChannelData(cricket::PortInterface* port,
37 const void* data,
38 size_t size,
39 bool payload) = 0;
40
41 virtual ~TurnCustomizer() {}
42};
43
44} // namespace webrtc
45
Steve Anton10542f22019-01-11 17:11:0046#endif // API_TURN_CUSTOMIZER_H_