• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "flutter/lib/ui/isolate_name_server/isolate_name_server.h"
6 
7 namespace flutter {
8 
IsolateNameServer()9 IsolateNameServer::IsolateNameServer() {}
10 
11 IsolateNameServer::~IsolateNameServer() = default;
12 
LookupIsolatePortByName(const std::string & name)13 Dart_Port IsolateNameServer::LookupIsolatePortByName(const std::string& name) {
14   std::scoped_lock lock(mutex_);
15   return LookupIsolatePortByNameUnprotected(name);
16 }
17 
LookupIsolatePortByNameUnprotected(const std::string & name)18 Dart_Port IsolateNameServer::LookupIsolatePortByNameUnprotected(
19     const std::string& name) {
20   auto port_iterator = port_mapping_.find(name);
21   if (port_iterator != port_mapping_.end()) {
22     return port_iterator->second;
23   }
24   return ILLEGAL_PORT;
25 }
26 
RegisterIsolatePortWithName(Dart_Port port,const std::string & name)27 bool IsolateNameServer::RegisterIsolatePortWithName(Dart_Port port,
28                                                     const std::string& name) {
29   std::scoped_lock lock(mutex_);
30   if (LookupIsolatePortByNameUnprotected(name) != ILLEGAL_PORT) {
31     // Name is already registered.
32     return false;
33   }
34   port_mapping_[name] = port;
35   return true;
36 }
37 
RemoveIsolateNameMapping(const std::string & name)38 bool IsolateNameServer::RemoveIsolateNameMapping(const std::string& name) {
39   std::scoped_lock lock(mutex_);
40   auto port_iterator = port_mapping_.find(name);
41   if (port_iterator == port_mapping_.end()) {
42     return false;
43   }
44   port_mapping_.erase(port_iterator);
45   return true;
46 }
47 
48 }  // namespace flutter
49