xref: /aosp_15_r20/external/openscreen/osp/impl/presentation/presentation_common.cc (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
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 Sanglard std::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 Sanglard MessageDemuxer* 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 Sanglard MessageDemuxer* 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 Sanglard PresentationID::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