| // Copyright 2010 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "gpu/command_buffer/service/id_manager.h" | |
| #include "base/check.h" | |
| namespace gpu { | |
| namespace gles2 { | |
| IdManager::IdManager() = default; | |
| IdManager::~IdManager() = default; | |
| bool IdManager::AddMapping(GLuint client_id, GLuint service_id) { | |
| std::pair<MapType::iterator, bool> result = id_map_.insert( | |
| std::make_pair(client_id, service_id)); | |
| return result.second; | |
| } | |
| bool IdManager::RemoveMapping(GLuint client_id, GLuint service_id) { | |
| MapType::iterator iter = id_map_.find(client_id); | |
| if (iter != id_map_.end() && iter->second == service_id) { | |
| id_map_.erase(iter); | |
| return true; | |
| } | |
| return false; | |
| } | |
| bool IdManager::GetServiceId(GLuint client_id, GLuint* service_id) { | |
| DCHECK(service_id); | |
| MapType::iterator iter = id_map_.find(client_id); | |
| if (iter != id_map_.end()) { | |
| *service_id = iter->second; | |
| return true; | |
| } | |
| return false; | |
| } | |
| bool IdManager::GetClientId(GLuint service_id, GLuint* client_id) { | |
| DCHECK(client_id); | |
| MapType::iterator end(id_map_.end()); | |
| for (MapType::iterator iter(id_map_.begin()); | |
| iter != end; | |
| ++iter) { | |
| if (iter->second == service_id) { | |
| *client_id = iter->first; | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| } // namespace gles2 | |
| } // namespace gpu | |