chromium/third_party/openscreen/src/cast/streaming/public/receiver_session.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CAST_STREAMING_PUBLIC_RECEIVER_SESSION_H_
#define CAST_STREAMING_PUBLIC_RECEIVER_SESSION_H_

#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "cast/common/public/message_port.h"
#include "cast/streaming/capture_configs.h"
#include "cast/streaming/impl/receiver_packet_router.h"
#include "cast/streaming/impl/session_config.h"
#include "cast/streaming/public/constants.h"
#include "cast/streaming/public/offer_messages.h"
#include "cast/streaming/public/receiver_constraints.h"
#include "cast/streaming/public/rpc_messenger.h"
#include "cast/streaming/public/session_messenger.h"
#include "cast/streaming/resolution.h"
#include "cast/streaming/sender_message.h"

namespace openscreen::cast {

class Environment;
class Receiver;

// This class is responsible for listening for streaming requests from Cast
// Sender devices, then negotiating capture constraints and instantiating audio
// and video Receiver objects.
//   The owner of this session is expected to provide a client for
// updates, an environment for getting UDP socket information (as well as
// other OS dependencies), and a set of constraints to be used for
// negotiation.
//
// NOTE: In some cases, the session initialization may be pending waiting for
// the UDP socket to be ready. In this case, the receivers and the answer
// message will not be configured and sent until the UDP socket has finished
// binding.
class ReceiverSession final : public Environment::SocketSubscriber {};

}  // namespace openscreen::cast

#endif  // CAST_STREAMING_PUBLIC_RECEIVER_SESSION_H_