summaryrefslogtreecommitdiff
path: root/Source/Core/Common/QoSSession.h
blob: c12a4ffc2a3fca5130adb966bacb909ee2f3d71b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright 2017 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#include <enet/enet.h>
#include <utility>

namespace Common
{
class QoSSession
{
public:
  // 1 0 1 1 1 0 0 0
  // DSCP      ECN
  static constexpr int ef_tos = 0b10111000;

  QoSSession() = default;
  QoSSession(ENetPeer* peer, int tos_val = ef_tos);

  ~QoSSession();

  QoSSession& operator=(const QoSSession&) = delete;
  QoSSession(const QoSSession&) = delete;

  QoSSession& operator=(QoSSession&& session);
  QoSSession(QoSSession&& session) { *this = std::move(session); }
  bool Successful() const { return m_success; }

private:
#if defined(_WIN32)
  void* m_qos_handle = nullptr;
  unsigned long m_qos_flow_id = 0;

  ENetPeer* m_peer = nullptr;
#endif

  bool m_success = false;
};
}  // namespace Common