blob: 1c3648b67f66222152ba842ae8b3933e2c971469 [file] [log] [blame]
// Copyright 2018 The Chromium 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 "mojo/public/cpp/platform/named_platform_channel.h"
#include "base/check.h"
#include "base/strings/string_piece.h"
#include "base/strings/utf_string_conversions.h"
namespace mojo {
const char NamedPlatformChannel::kNamedHandleSwitch[] =
"mojo-named-platform-channel-pipe";
NamedPlatformChannel::NamedPlatformChannel(const Options& options) {
server_endpoint_ = PlatformChannelServerEndpoint(
CreateServerEndpoint(options, &server_name_));
}
NamedPlatformChannel::NamedPlatformChannel(NamedPlatformChannel&& other) =
default;
NamedPlatformChannel::~NamedPlatformChannel() = default;
NamedPlatformChannel& NamedPlatformChannel::operator=(
NamedPlatformChannel&& other) = default;
// static
NamedPlatformChannel::ServerName NamedPlatformChannel::ServerNameFromUTF8(
base::StringPiece name) {
#if defined(OS_WIN)
return base::UTF8ToWide(name);
#else
return std::string(name);
#endif
}
void NamedPlatformChannel::PassServerNameOnCommandLine(
base::CommandLine* command_line) {
command_line->AppendSwitchNative(kNamedHandleSwitch, server_name_);
}
// static
PlatformChannelEndpoint NamedPlatformChannel::ConnectToServer(
const ServerName& server_name) {
DCHECK(!server_name.empty());
return CreateClientEndpoint(server_name);
}
// static
PlatformChannelEndpoint NamedPlatformChannel::ConnectToServer(
const base::CommandLine& command_line) {
ServerName name = command_line.GetSwitchValueNative(kNamedHandleSwitch);
if (name.empty())
return PlatformChannelEndpoint();
return ConnectToServer(name);
}
} // namespace mojo