Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef REMOTING_PROTOCOL_PAIRING_REGISTRY_H_ | 5 #ifndef REMOTING_PROTOCOL_PAIRING_REGISTRY_H_ |
| 6 #define REMOTING_PROTOCOL_PAIRING_REGISTRY_H_ | 6 #define REMOTING_PROTOCOL_PAIRING_REGISTRY_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <queue> | |
| 9 #include <string> | 10 #include <string> |
| 10 #include <vector> | 11 #include <vector> |
| 11 | 12 |
| 12 #include "base/callback.h" | 13 #include "base/callback.h" |
| 13 #include "base/gtest_prod_util.h" | 14 #include "base/gtest_prod_util.h" |
| 14 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
| 15 #include "base/memory/scoped_ptr.h" | 16 #include "base/memory/scoped_ptr.h" |
| 16 #include "base/threading/non_thread_safe.h" | 17 #include "base/threading/non_thread_safe.h" |
| 17 #include "base/time/time.h" | 18 #include "base/time/time.h" |
| 18 | 19 |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 120 void ClearAllPairings(const SaveCallback& callback); | 121 void ClearAllPairings(const SaveCallback& callback); |
| 121 | 122 |
| 122 private: | 123 private: |
| 123 FRIEND_TEST_ALL_PREFIXES(PairingRegistryTest, AddPairing); | 124 FRIEND_TEST_ALL_PREFIXES(PairingRegistryTest, AddPairing); |
| 124 FRIEND_TEST_ALL_PREFIXES(PairingRegistryTest, GetAllPairingsJSON); | 125 FRIEND_TEST_ALL_PREFIXES(PairingRegistryTest, GetAllPairingsJSON); |
| 125 friend class NegotiatingAuthenticatorTest; | 126 friend class NegotiatingAuthenticatorTest; |
| 126 friend class base::RefCountedThreadSafe<PairingRegistry>; | 127 friend class base::RefCountedThreadSafe<PairingRegistry>; |
| 127 | 128 |
| 128 virtual ~PairingRegistry(); | 129 virtual ~PairingRegistry(); |
| 129 | 130 |
| 131 // Helper method for unit tests. | |
| 130 void AddPairing(const Pairing& pairing); | 132 void AddPairing(const Pairing& pairing); |
| 133 | |
| 134 // Private implementation functions for each of the public methods. These | |
| 135 // are queued as closures by the corresponding public method if there is | |
| 136 // a request being serviced when it is called. The |callback| parameters | |
| 137 // include the original caller-supplied callback wrapped in one of the | |
| 138 // Invoke*CallbackAndScheduleNext methods defined below. | |
| 139 void SavePairingAndScheduleNext(Pairing pairing, | |
|
Jamie
2013/07/18 00:15:07
I'm not convinced by the naming of these methods.
| |
| 140 const SaveCallback& callback); | |
| 141 void GetPairingAndScheduleNext(const std::string& client_id, | |
| 142 const GetPairingCallback& callback); | |
| 143 void GetAllPairingsAndScheduleNext(const GetAllPairingsCallback& callback); | |
| 144 void DeletePairingAndScheduleNext(const std::string& client_id, | |
| 145 const SaveCallback& callback); | |
| 146 void ClearAllPairingsAndScheduleNext(const SaveCallback& callback); | |
| 147 | |
| 148 // Worker functions for each of the public methods, passed as a callback to | |
| 149 // the delegate. | |
| 131 void MergePairingAndSave(const Pairing& pairing, | 150 void MergePairingAndSave(const Pairing& pairing, |
| 151 const SaveCallback& callback, | |
| 132 const std::string& pairings_json); | 152 const std::string& pairings_json); |
| 133 void DoGetPairing(const std::string& client_id, | 153 void DoGetPairing(const std::string& client_id, |
| 134 const GetPairingCallback& callback, | 154 const GetPairingCallback& callback, |
| 135 const std::string& pairings_json); | 155 const std::string& pairings_json); |
| 136 void SanitizePairings(const GetAllPairingsCallback& callback, | 156 void SanitizePairings(const GetAllPairingsCallback& callback, |
| 137 const std::string& pairings_json); | 157 const std::string& pairings_json); |
| 138 void DoDeletePairing(const std::string& client_id, | 158 void DoDeletePairing(const std::string& client_id, |
| 139 const SaveCallback& callback, | 159 const SaveCallback& callback, |
| 140 const std::string& pairings_json); | 160 const std::string& pairings_json); |
| 141 | 161 |
| 162 // "Trampoline" callbacks that schedule the next pending request and then | |
| 163 // invoke the original caller-supplied callback. | |
| 164 void InvokeLoadCallbackAndScheduleNext( | |
| 165 const LoadCallback& callback, const std::string& pairings_json); | |
| 166 void InvokeSaveCallbackAndScheduleNext( | |
| 167 const SaveCallback& callback, bool success); | |
| 168 void InvokeGetPairingCallbackAndScheduleNext( | |
| 169 const GetPairingCallback& callback, Pairing pairing); | |
| 170 void InvokeGetAllPairingsCallbackAndScheduleNext( | |
| 171 const GetAllPairingsCallback& callback, | |
| 172 scoped_ptr<base::ListValue> pairings); | |
| 173 | |
| 174 // Queue management methods. | |
| 175 void ServiceOrQueueRequest(const base::Closure& request); | |
| 176 void ServiceNextRequest(); | |
| 177 | |
| 142 // Translate between the structured and serialized forms of the pairing data. | 178 // Translate between the structured and serialized forms of the pairing data. |
| 143 static PairedClients DecodeJson(const std::string& pairings_json); | 179 static PairedClients DecodeJson(const std::string& pairings_json); |
| 144 static std::string EncodeJson(const PairedClients& clients); | 180 static std::string EncodeJson(const PairedClients& clients); |
| 145 static scoped_ptr<base::ListValue> ConvertToListValue( | 181 static scoped_ptr<base::ListValue> ConvertToListValue( |
| 146 const PairedClients& clients, | 182 const PairedClients& clients, |
| 147 bool include_shared_secrets); | 183 bool include_shared_secrets); |
| 148 | 184 |
| 149 scoped_ptr<Delegate> delegate_; | 185 scoped_ptr<Delegate> delegate_; |
| 150 | 186 |
| 187 std::queue<base::Closure> pending_requests_; | |
| 188 bool servicing_request_; | |
|
Lambros
2013/07/18 20:34:51
Suggestion: if you keep the currently-serviced req
Jamie
2013/07/18 22:44:56
Done.
| |
| 189 | |
| 151 DISALLOW_COPY_AND_ASSIGN(PairingRegistry); | 190 DISALLOW_COPY_AND_ASSIGN(PairingRegistry); |
| 152 }; | 191 }; |
| 153 | 192 |
| 154 } // namespace protocol | 193 } // namespace protocol |
| 155 } // namespace remoting | 194 } // namespace remoting |
| 156 | 195 |
| 157 #endif // REMOTING_PROTOCOL_PAIRING_REGISTRY_H_ | 196 #endif // REMOTING_PROTOCOL_PAIRING_REGISTRY_H_ |
| OLD | NEW |