blob: ab68a417bb516ce16b147f6f3abfe9a24195771f [file] [log] [blame]
// Copyright 2013 The Flutter 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 "flutter/lib/ui/isolate_name_server/isolate_name_server_natives.h"
#include <string>
#include "flutter/lib/ui/isolate_name_server/isolate_name_server.h"
#include "flutter/lib/ui/ui_dart_state.h"
#include "third_party/tonic/dart_binding_macros.h"
#include "third_party/tonic/dart_library_natives.h"
namespace flutter {
Dart_Handle IsolateNameServerNatives::LookupPortByName(
const std::string& name) {
auto name_server = UIDartState::Current()->GetIsolateNameServer();
if (!name_server) {
return Dart_Null();
}
Dart_Port port = name_server->LookupIsolatePortByName(name);
if (port == ILLEGAL_PORT) {
return Dart_Null();
}
return Dart_NewSendPort(port);
}
bool IsolateNameServerNatives::RegisterPortWithName(Dart_Handle port_handle,
const std::string& name) {
auto name_server = UIDartState::Current()->GetIsolateNameServer();
if (!name_server) {
return false;
}
Dart_Port port = ILLEGAL_PORT;
Dart_SendPortGetId(port_handle, &port);
if (!name_server->RegisterIsolatePortWithName(port, name)) {
return false;
}
return true;
}
bool IsolateNameServerNatives::RemovePortNameMapping(const std::string& name) {
auto name_server = UIDartState::Current()->GetIsolateNameServer();
if (!name_server || !name_server->RemoveIsolateNameMapping(name)) {
return false;
}
return true;
}
} // namespace flutter