Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5426)

Unified Diff: chrome/browser/extensions/api/socket/socket_api_controller.h

Issue 8857004: Delete UDPClientSocket on same thread as creation. Also refactor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to fix hunk failure. Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/socket/socket_api_controller.h
diff --git a/chrome/browser/extensions/api/socket/socket_api_controller.h b/chrome/browser/extensions/api/socket/socket_api_controller.h
index f35b10a4492315a4c6fd85053afc8d94745ea1bc..ff50bc0b6e9accb0c28644259c7ee49f15b4a3c5 100644
--- a/chrome/browser/extensions/api/socket/socket_api_controller.h
+++ b/chrome/browser/extensions/api/socket/socket_api_controller.h
@@ -9,8 +9,8 @@
#include <string>
#include <map>
+#include "base/memory/linked_ptr.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/singleton.h"
#include "googleurl/src/gurl.h"
#include "net/base/completion_callback.h"
@@ -30,25 +30,19 @@ namespace extensions {
class Socket;
-// The SocketController singleton keeps track of all our Sockets, and provides
-// a convenient set of methods to manipulate them.
+// SocketController keeps track of a collection of Sockets and provides a
+// convenient set of methods to manipulate them.
class SocketController {
public:
- static SocketController* GetInstance();
-
SocketController();
virtual ~SocketController();
// Create/Destroy are a pair. They represent the allocation and deallocation
// of the Socket object in memory.
//
- // TODO(miket): we currently require the app developer to remember to call
- // Destroy, which is a buzzkill in JavaScript. I believe that to solve this,
- // we'll have to associate each Socket with a creator extension, and then
- // clean up when the extension goes out of scope. As the API is defined
- // today, we're exposing only primitive socketIds to JavaScript, which seems
- // to imply that we won't be able to garbage-collect when individual sockets
- // "go out of scope" (in quotes because they never do).
+ // TODO(miket): aa's suggestion to track lifetime of callbacks associated
+ // with each socket, which will then let us clean up when we go out of scope
+ // rather than requiring that the app developer remember to call Destroy.
int CreateUdp(const Profile* profile, const std::string& extension_id,
const GURL& src_url);
bool DestroyUdp(int socket_id);
@@ -68,14 +62,12 @@ class SocketController {
private:
int next_socket_id_;
- typedef std::map<int, Socket*> SocketMap;
+ typedef std::map<int, linked_ptr<Socket> > SocketMap;
SocketMap socket_map_;
// Convenience method for accessing SocketMap.
Socket* GetSocket(int socket_id);
- friend struct DefaultSingletonTraits<SocketController>;
-
DISALLOW_COPY_AND_ASSIGN(SocketController);
};
« no previous file with comments | « chrome/browser/extensions/api/socket/socket_api.cc ('k') | chrome/browser/extensions/api/socket/socket_api_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698