1*3f982cf4SFabien Sanglard // Copyright 2019 The Chromium Authors. All rights reserved. 2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be 3*3f982cf4SFabien Sanglard // found in the LICENSE file. 4*3f982cf4SFabien Sanglard 5*3f982cf4SFabien Sanglard #include "osp/impl/presentation/presentation_common.h" 6*3f982cf4SFabien Sanglard 7*3f982cf4SFabien Sanglard #include "absl/strings/ascii.h" 8*3f982cf4SFabien Sanglard 9*3f982cf4SFabien Sanglard namespace openscreen { 10*3f982cf4SFabien Sanglard namespace osp { 11*3f982cf4SFabien Sanglard GetProtocolConnection(uint64_t endpoint_id)12*3f982cf4SFabien Sanglardstd::unique_ptr<ProtocolConnection> GetProtocolConnection( 13*3f982cf4SFabien Sanglard uint64_t endpoint_id) { 14*3f982cf4SFabien Sanglard return NetworkServiceManager::Get() 15*3f982cf4SFabien Sanglard ->GetProtocolConnectionServer() 16*3f982cf4SFabien Sanglard ->CreateProtocolConnection(endpoint_id); 17*3f982cf4SFabien Sanglard } 18*3f982cf4SFabien Sanglard GetServerDemuxer()19*3f982cf4SFabien SanglardMessageDemuxer* GetServerDemuxer() { 20*3f982cf4SFabien Sanglard return NetworkServiceManager::Get() 21*3f982cf4SFabien Sanglard ->GetProtocolConnectionServer() 22*3f982cf4SFabien Sanglard ->message_demuxer(); 23*3f982cf4SFabien Sanglard } 24*3f982cf4SFabien Sanglard GetClientDemuxer()25*3f982cf4SFabien SanglardMessageDemuxer* GetClientDemuxer() { 26*3f982cf4SFabien Sanglard return NetworkServiceManager::Get() 27*3f982cf4SFabien Sanglard ->GetProtocolConnectionClient() 28*3f982cf4SFabien Sanglard ->message_demuxer(); 29*3f982cf4SFabien Sanglard } 30*3f982cf4SFabien Sanglard PresentationID(std::string presentation_id)31*3f982cf4SFabien SanglardPresentationID::PresentationID(std::string presentation_id) 32*3f982cf4SFabien Sanglard : id_(Error::Code::kParseError) { 33*3f982cf4SFabien Sanglard // The spec dictates that the presentation ID must be composed 34*3f982cf4SFabien Sanglard // of at least 16 ASCII characters. 35*3f982cf4SFabien Sanglard bool is_valid = presentation_id.length() >= 16; 36*3f982cf4SFabien Sanglard for (const char& c : presentation_id) { 37*3f982cf4SFabien Sanglard is_valid &= absl::ascii_isprint(c); 38*3f982cf4SFabien Sanglard } 39*3f982cf4SFabien Sanglard 40*3f982cf4SFabien Sanglard if (is_valid) { 41*3f982cf4SFabien Sanglard id_ = std::move(presentation_id); 42*3f982cf4SFabien Sanglard } 43*3f982cf4SFabien Sanglard } 44*3f982cf4SFabien Sanglard 45*3f982cf4SFabien Sanglard } // namespace osp 46*3f982cf4SFabien Sanglard } // namespace openscreen 47