// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "cast/receiver/public/receiver_socket_factory.h" #include "util/osp_logging.h" namespace openscreen { namespace cast { ReceiverSocketFactory::ReceiverSocketFactory(Client* client, CastSocket::Client* socket_client) : client_(client), socket_client_(socket_client) { OSP_DCHECK(client); OSP_DCHECK(socket_client); } ReceiverSocketFactory::~ReceiverSocketFactory() = default; void ReceiverSocketFactory::OnAccepted( TlsConnectionFactory* factory, std::vector der_x509_peer_cert, std::unique_ptr connection) { IPEndpoint endpoint = connection->GetRemoteEndpoint(); auto socket = std::make_unique(std::move(connection), socket_client_); client_->OnConnected(this, endpoint, std::move(socket)); } void ReceiverSocketFactory::OnConnected( TlsConnectionFactory* factory, std::vector der_x509_peer_cert, std::unique_ptr connection) { OSP_LOG_FATAL << "This factory is accept-only"; } void ReceiverSocketFactory::OnConnectionFailed( TlsConnectionFactory* factory, const IPEndpoint& remote_address) { OSP_DVLOG << "Receiving connection from endpoint failed: " << remote_address; client_->OnError(this, Error(Error::Code::kConnectionFailed, "Accepting connection failed.")); } void ReceiverSocketFactory::OnError(TlsConnectionFactory* factory, Error error) { client_->OnError(this, error); } } // namespace cast } // namespace openscreen