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

Side by Side Diff: remoting/protocol/pairing_registry.h

Issue 19714002: Add serialization to PairingRegistry. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reviewer feedback. Created 7 years, 5 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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 // Worker functions for each of the public methods, passed as a callback to
135 // the delegate.
131 void MergePairingAndSave(const Pairing& pairing, 136 void MergePairingAndSave(const Pairing& pairing,
137 const SaveCallback& callback,
132 const std::string& pairings_json); 138 const std::string& pairings_json);
133 void DoGetPairing(const std::string& client_id, 139 void DoGetPairing(const std::string& client_id,
134 const GetPairingCallback& callback, 140 const GetPairingCallback& callback,
135 const std::string& pairings_json); 141 const std::string& pairings_json);
136 void SanitizePairings(const GetAllPairingsCallback& callback, 142 void SanitizePairings(const GetAllPairingsCallback& callback,
137 const std::string& pairings_json); 143 const std::string& pairings_json);
138 void DoDeletePairing(const std::string& client_id, 144 void DoDeletePairing(const std::string& client_id,
139 const SaveCallback& callback, 145 const SaveCallback& callback,
140 const std::string& pairings_json); 146 const std::string& pairings_json);
141 147
148 // "Trampoline" callbacks that schedule the next pending request and then
149 // invoke the original caller-supplied callback.
150 void InvokeLoadCallbackAndScheduleNext(
151 const LoadCallback& callback, const std::string& pairings_json);
152 void InvokeSaveCallbackAndScheduleNext(
153 const SaveCallback& callback, bool success);
154 void InvokeGetPairingCallbackAndScheduleNext(
155 const GetPairingCallback& callback, Pairing pairing);
156 void InvokeGetAllPairingsCallbackAndScheduleNext(
157 const GetAllPairingsCallback& callback,
158 scoped_ptr<base::ListValue> pairings);
159
160 // Queue management methods.
161 void ServiceOrQueueRequest(const base::Closure& request);
162 void ServiceNextRequest();
163
142 // Translate between the structured and serialized forms of the pairing data. 164 // Translate between the structured and serialized forms of the pairing data.
143 static PairedClients DecodeJson(const std::string& pairings_json); 165 static PairedClients DecodeJson(const std::string& pairings_json);
144 static std::string EncodeJson(const PairedClients& clients); 166 static std::string EncodeJson(const PairedClients& clients);
145 static scoped_ptr<base::ListValue> ConvertToListValue( 167 static scoped_ptr<base::ListValue> ConvertToListValue(
146 const PairedClients& clients, 168 const PairedClients& clients,
147 bool include_shared_secrets); 169 bool include_shared_secrets);
148 170
149 scoped_ptr<Delegate> delegate_; 171 scoped_ptr<Delegate> delegate_;
150 172
173 std::queue<base::Closure> pending_requests_;
174
151 DISALLOW_COPY_AND_ASSIGN(PairingRegistry); 175 DISALLOW_COPY_AND_ASSIGN(PairingRegistry);
152 }; 176 };
153 177
154 } // namespace protocol 178 } // namespace protocol
155 } // namespace remoting 179 } // namespace remoting
156 180
157 #endif // REMOTING_PROTOCOL_PAIRING_REGISTRY_H_ 181 #endif // REMOTING_PROTOCOL_PAIRING_REGISTRY_H_
OLDNEW
« no previous file with comments | « no previous file | remoting/protocol/pairing_registry.cc » ('j') | remoting/protocol/pairing_registry.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698