OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ipc/ipc_channel_posix.h" | 5 #include "ipc/ipc_channel_posix.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <fcntl.h> | 8 #include <fcntl.h> |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 #include <sys/socket.h> | 10 #include <sys/socket.h> |
(...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 } else { | 740 } else { |
741 Close(); | 741 Close(); |
742 if (AcceptsConnections()) { | 742 if (AcceptsConnections()) { |
743 listener()->OnChannelListenError(); | 743 listener()->OnChannelListenError(); |
744 } else { | 744 } else { |
745 listener()->OnChannelError(); | 745 listener()->OnChannelError(); |
746 } | 746 } |
747 } | 747 } |
748 } | 748 } |
749 | 749 |
750 int ChannelPosix::GetHelloMessageProcId() { | 750 int ChannelPosix::GetHelloMessageProcId() const { |
751 int pid = base::GetCurrentProcId(); | 751 int pid = base::GetCurrentProcId(); |
752 #if defined(OS_LINUX) | 752 #if defined(OS_LINUX) |
753 // Our process may be in a sandbox with a separate PID namespace. | 753 // Our process may be in a sandbox with a separate PID namespace. |
754 if (global_pid_) { | 754 if (global_pid_) { |
755 pid = global_pid_; | 755 pid = global_pid_; |
756 } | 756 } |
757 #endif | 757 #endif |
758 return pid; | 758 return pid; |
759 } | 759 } |
760 | 760 |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1043 server_listen_connection_watcher_.StopWatchingFileDescriptor(); | 1043 server_listen_connection_watcher_.StopWatchingFileDescriptor(); |
1044 } | 1044 } |
1045 | 1045 |
1046 CloseClientFileDescriptor(); | 1046 CloseClientFileDescriptor(); |
1047 } | 1047 } |
1048 | 1048 |
1049 base::ProcessId ChannelPosix::GetPeerPID() const { | 1049 base::ProcessId ChannelPosix::GetPeerPID() const { |
1050 return peer_pid_; | 1050 return peer_pid_; |
1051 } | 1051 } |
1052 | 1052 |
| 1053 base::ProcessId ChannelPosix::GetSelfPID() const { |
| 1054 return GetHelloMessageProcId(); |
| 1055 } |
| 1056 |
| 1057 ChannelHandle ChannelPosix::TakePipeHandle() { |
| 1058 ChannelHandle handle = ChannelHandle(pipe_name_, |
| 1059 base::FileDescriptor(pipe_, false)); |
| 1060 pipe_ = -1; |
| 1061 return handle; |
| 1062 } |
| 1063 |
1053 //------------------------------------------------------------------------------ | 1064 //------------------------------------------------------------------------------ |
1054 // Channel's methods | 1065 // Channel's methods |
1055 | 1066 |
1056 // static | 1067 // static |
1057 scoped_ptr<Channel> Channel::Create( | 1068 scoped_ptr<Channel> Channel::Create( |
1058 const IPC::ChannelHandle &channel_handle, Mode mode, Listener* listener) { | 1069 const IPC::ChannelHandle &channel_handle, Mode mode, Listener* listener) { |
1059 return make_scoped_ptr(new ChannelPosix( | 1070 return make_scoped_ptr(new ChannelPosix( |
1060 channel_handle, mode, listener)).PassAs<Channel>(); | 1071 channel_handle, mode, listener)).PassAs<Channel>(); |
1061 } | 1072 } |
1062 | 1073 |
(...skipping 16 matching lines...) Expand all Loading... |
1079 } | 1090 } |
1080 | 1091 |
1081 #if defined(OS_LINUX) | 1092 #if defined(OS_LINUX) |
1082 // static | 1093 // static |
1083 void Channel::SetGlobalPid(int pid) { | 1094 void Channel::SetGlobalPid(int pid) { |
1084 ChannelPosix::SetGlobalPid(pid); | 1095 ChannelPosix::SetGlobalPid(pid); |
1085 } | 1096 } |
1086 #endif // OS_LINUX | 1097 #endif // OS_LINUX |
1087 | 1098 |
1088 } // namespace IPC | 1099 } // namespace IPC |
OLD | NEW |