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()9IsolateNameServer::IsolateNameServer() {} 10 11 IsolateNameServer::~IsolateNameServer() = default; 12 LookupIsolatePortByName(const std::string & name)13Dart_Port IsolateNameServer::LookupIsolatePortByName(const std::string& name) { 14 std::scoped_lock lock(mutex_); 15 return LookupIsolatePortByNameUnprotected(name); 16 } 17 LookupIsolatePortByNameUnprotected(const std::string & name)18Dart_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)27bool 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)38bool 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