Index: ipc/ipc_channel_posix.cc |
diff --git a/ipc/ipc_channel_posix.cc b/ipc/ipc_channel_posix.cc |
index 65a04e1179f4329d3f0ebb69f3e48ec451d7fd92..bbf137432943d7abfe487f8dacf96828a31823ee 100644 |
--- a/ipc/ipc_channel_posix.cc |
+++ b/ipc/ipc_channel_posix.cc |
@@ -75,6 +75,10 @@ namespace { |
class PipeMap { |
public: |
+ static PipeMap* GetInstance() { |
+ return Singleton<PipeMap>::get(); |
+ } |
+ |
// Lookup a given channel id. Return -1 if not found. |
int Lookup(const std::string& channel_id) { |
AutoLock locked(lock_); |
@@ -115,13 +119,15 @@ class PipeMap { |
Lock lock_; |
typedef std::map<std::string, int> ChannelToFDMap; |
ChannelToFDMap map_; |
+ |
+ friend struct DefaultSingletonTraits<PipeMap>; |
}; |
// Used to map a channel name to the equivalent FD # in the current process. |
// Returns -1 if the channel is unknown. |
int ChannelNameToFD(const std::string& channel_id) { |
// See the large block comment above PipeMap for the reasoning here. |
- const int fd = Singleton<PipeMap>()->Lookup(channel_id); |
+ const int fd = PipeMap::GetInstance()->Lookup(channel_id); |
if (fd != -1) { |
int dup_fd = dup(fd); |
@@ -305,17 +311,17 @@ Channel::ChannelImpl::~ChannelImpl() { |
// static |
void AddChannelSocket(const std::string& name, int socket) { |
- Singleton<PipeMap>()->Insert(name, socket); |
+ PipeMap::GetInstance()->Insert(name, socket); |
} |
// static |
void RemoveAndCloseChannelSocket(const std::string& name) { |
- Singleton<PipeMap>()->RemoveAndClose(name); |
+ PipeMap::GetInstance()->RemoveAndClose(name); |
} |
// static |
bool ChannelSocketExists(const std::string& name) { |
- return Singleton<PipeMap>()->Lookup(name) != -1; |
+ return PipeMap::GetInstance()->Lookup(name) != -1; |
} |
// static |
@@ -512,7 +518,7 @@ bool Channel::ChannelImpl::ProcessIncomingMessages() { |
DCHECK(bytes_read); |
if (client_pipe_ != -1) { |
- Singleton<PipeMap>()->RemoveAndClose(pipe_name_); |
+ PipeMap::GetInstance()->RemoveAndClose(pipe_name_); |
client_pipe_ = -1; |
} |
@@ -1021,7 +1027,7 @@ void Channel::ChannelImpl::Close() { |
pipe_ = -1; |
} |
if (client_pipe_ != -1) { |
- Singleton<PipeMap>()->RemoveAndClose(pipe_name_); |
+ PipeMap::GetInstance()->RemoveAndClose(pipe_name_); |
client_pipe_ = -1; |
} |
#if !defined(OS_MACOSX) |