xref: /aosp_15_r20/external/libchrome/ipc/ipc_channel_common.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #include "build/build_config.h"
6*635a8641SAndroid Build Coastguard Worker #include "ipc/ipc_channel.h"
7*635a8641SAndroid Build Coastguard Worker #include "ipc/ipc_channel_mojo.h"
8*635a8641SAndroid Build Coastguard Worker #include "mojo/public/cpp/system/message_pipe.h"
9*635a8641SAndroid Build Coastguard Worker 
10*635a8641SAndroid Build Coastguard Worker namespace IPC {
11*635a8641SAndroid Build Coastguard Worker 
12*635a8641SAndroid Build Coastguard Worker #if defined(OS_LINUX)
13*635a8641SAndroid Build Coastguard Worker 
14*635a8641SAndroid Build Coastguard Worker namespace {
15*635a8641SAndroid Build Coastguard Worker int g_global_pid = 0;
16*635a8641SAndroid Build Coastguard Worker }
17*635a8641SAndroid Build Coastguard Worker 
18*635a8641SAndroid Build Coastguard Worker // static
SetGlobalPid(int pid)19*635a8641SAndroid Build Coastguard Worker void Channel::SetGlobalPid(int pid) {
20*635a8641SAndroid Build Coastguard Worker   g_global_pid = pid;
21*635a8641SAndroid Build Coastguard Worker }
22*635a8641SAndroid Build Coastguard Worker 
23*635a8641SAndroid Build Coastguard Worker // static
GetGlobalPid()24*635a8641SAndroid Build Coastguard Worker int Channel::GetGlobalPid() {
25*635a8641SAndroid Build Coastguard Worker   return g_global_pid;
26*635a8641SAndroid Build Coastguard Worker }
27*635a8641SAndroid Build Coastguard Worker 
28*635a8641SAndroid Build Coastguard Worker #endif  // defined(OS_LINUX)
29*635a8641SAndroid Build Coastguard Worker 
30*635a8641SAndroid Build Coastguard Worker // static
CreateClient(const IPC::ChannelHandle & channel_handle,Listener * listener,const scoped_refptr<base::SingleThreadTaskRunner> & ipc_task_runner)31*635a8641SAndroid Build Coastguard Worker std::unique_ptr<Channel> Channel::CreateClient(
32*635a8641SAndroid Build Coastguard Worker     const IPC::ChannelHandle& channel_handle,
33*635a8641SAndroid Build Coastguard Worker     Listener* listener,
34*635a8641SAndroid Build Coastguard Worker     const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) {
35*635a8641SAndroid Build Coastguard Worker #if defined(OS_NACL_SFI)
36*635a8641SAndroid Build Coastguard Worker   return Channel::Create(channel_handle, Channel::MODE_CLIENT, listener);
37*635a8641SAndroid Build Coastguard Worker #else
38*635a8641SAndroid Build Coastguard Worker   DCHECK(channel_handle.is_mojo_channel_handle());
39*635a8641SAndroid Build Coastguard Worker   return ChannelMojo::Create(
40*635a8641SAndroid Build Coastguard Worker       mojo::ScopedMessagePipeHandle(channel_handle.mojo_handle),
41*635a8641SAndroid Build Coastguard Worker       Channel::MODE_CLIENT, listener, ipc_task_runner,
42*635a8641SAndroid Build Coastguard Worker       base::ThreadTaskRunnerHandle::Get());
43*635a8641SAndroid Build Coastguard Worker #endif
44*635a8641SAndroid Build Coastguard Worker }
45*635a8641SAndroid Build Coastguard Worker 
46*635a8641SAndroid Build Coastguard Worker // static
CreateServer(const IPC::ChannelHandle & channel_handle,Listener * listener,const scoped_refptr<base::SingleThreadTaskRunner> & ipc_task_runner)47*635a8641SAndroid Build Coastguard Worker std::unique_ptr<Channel> Channel::CreateServer(
48*635a8641SAndroid Build Coastguard Worker     const IPC::ChannelHandle& channel_handle,
49*635a8641SAndroid Build Coastguard Worker     Listener* listener,
50*635a8641SAndroid Build Coastguard Worker     const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) {
51*635a8641SAndroid Build Coastguard Worker #if defined(OS_NACL_SFI)
52*635a8641SAndroid Build Coastguard Worker   return Channel::Create(channel_handle, Channel::MODE_SERVER, listener);
53*635a8641SAndroid Build Coastguard Worker #else
54*635a8641SAndroid Build Coastguard Worker   DCHECK(channel_handle.is_mojo_channel_handle());
55*635a8641SAndroid Build Coastguard Worker   return ChannelMojo::Create(
56*635a8641SAndroid Build Coastguard Worker       mojo::ScopedMessagePipeHandle(channel_handle.mojo_handle),
57*635a8641SAndroid Build Coastguard Worker       Channel::MODE_SERVER, listener, ipc_task_runner,
58*635a8641SAndroid Build Coastguard Worker       base::ThreadTaskRunnerHandle::Get());
59*635a8641SAndroid Build Coastguard Worker #endif
60*635a8641SAndroid Build Coastguard Worker }
61*635a8641SAndroid Build Coastguard Worker 
62*635a8641SAndroid Build Coastguard Worker Channel::~Channel() = default;
63*635a8641SAndroid Build Coastguard Worker 
GetAssociatedInterfaceSupport()64*635a8641SAndroid Build Coastguard Worker Channel::AssociatedInterfaceSupport* Channel::GetAssociatedInterfaceSupport() {
65*635a8641SAndroid Build Coastguard Worker   return nullptr;
66*635a8641SAndroid Build Coastguard Worker }
67*635a8641SAndroid Build Coastguard Worker 
Pause()68*635a8641SAndroid Build Coastguard Worker void Channel::Pause() { NOTREACHED(); }
69*635a8641SAndroid Build Coastguard Worker 
Unpause(bool flush)70*635a8641SAndroid Build Coastguard Worker void Channel::Unpause(bool flush) { NOTREACHED(); }
71*635a8641SAndroid Build Coastguard Worker 
Flush()72*635a8641SAndroid Build Coastguard Worker void Channel::Flush() { NOTREACHED(); }
73*635a8641SAndroid Build Coastguard Worker 
WillConnect()74*635a8641SAndroid Build Coastguard Worker void Channel::WillConnect() {
75*635a8641SAndroid Build Coastguard Worker   did_start_connect_ = true;
76*635a8641SAndroid Build Coastguard Worker }
77*635a8641SAndroid Build Coastguard Worker 
78*635a8641SAndroid Build Coastguard Worker }  // namespace IPC
79