Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 NET_HTTP_DISK_CACHE_BASED_SSL_HOST_INFO_H | 5 #ifndef NET_HTTP_DISK_CACHE_BASED_SSL_HOST_INFO_H |
| 6 #define NET_HTTP_DISK_CACHE_BASED_SSL_HOST_INFO_H | 6 #define NET_HTTP_DISK_CACHE_BASED_SSL_HOST_INFO_H |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/lock.h" | 10 #include "base/lock.h" |
| 11 #include "base/non_thread_safe.h" | 11 #include "base/non_thread_safe.h" |
| 12 #include "base/scoped_ptr.h" | 12 #include "base/scoped_ptr.h" |
| 13 #include "base/weak_ptr.h" | |
| 13 #include "net/base/completion_callback.h" | 14 #include "net/base/completion_callback.h" |
| 14 #include "net/disk_cache/disk_cache.h" | 15 #include "net/disk_cache/disk_cache.h" |
| 15 #include "net/socket/ssl_host_info.h" | 16 #include "net/socket/ssl_host_info.h" |
| 16 | 17 |
| 17 namespace net { | 18 namespace net { |
| 18 | 19 |
| 19 class HttpCache; | 20 class HttpCache; |
| 20 class IOBuffer; | 21 class IOBuffer; |
| 21 struct SSLConfig; | 22 struct SSLConfig; |
| 22 | 23 |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 51 int DoOpen(); | 52 int DoOpen(); |
| 52 int DoRead(); | 53 int DoRead(); |
| 53 int DoCreate(); | 54 int DoCreate(); |
| 54 int DoWrite(); | 55 int DoWrite(); |
| 55 | 56 |
| 56 // WaitForDataReadyDone is the terminal state of the read operation. | 57 // WaitForDataReadyDone is the terminal state of the read operation. |
| 57 int WaitForDataReadyDone(); | 58 int WaitForDataReadyDone(); |
| 58 // SetDone is the terminal state of the write operation. | 59 // SetDone is the terminal state of the write operation. |
| 59 int SetDone(); | 60 int SetDone(); |
| 60 | 61 |
| 62 // IsCallbackPending returns true if we have a pending callback. | |
| 63 bool IsCallbackPending() const; | |
| 64 | |
| 61 enum State { | 65 enum State { |
| 62 GET_BACKEND, | 66 GET_BACKEND, |
| 63 GET_BACKEND_COMPLETE, | 67 GET_BACKEND_COMPLETE, |
| 64 OPEN, | 68 OPEN, |
| 65 OPEN_COMPLETE, | 69 OPEN_COMPLETE, |
| 66 READ, | 70 READ, |
| 67 READ_COMPLETE, | 71 READ_COMPLETE, |
| 68 WAIT_FOR_DATA_READY_DONE, | 72 WAIT_FOR_DATA_READY_DONE, |
| 69 CREATE, | 73 CREATE, |
| 70 CREATE_COMPLETE, | 74 CREATE_COMPLETE, |
| 71 WRITE, | 75 WRITE, |
| 72 WRITE_COMPLETE, | 76 WRITE_COMPLETE, |
| 73 SET_DONE, | 77 SET_DONE, |
| 74 NONE, | 78 NONE, |
| 75 }; | 79 }; |
| 76 | 80 |
| 77 scoped_refptr<CancelableCompletionCallback<DiskCacheBasedSSLHostInfo> > | 81 class CallbackImpl : public CallbackRunner<Tuple1<int> > { |
|
willchan no longer on Chromium
2010/12/15 00:03:14
Nice solution!
http://google-styleguide.googlecod
agl
2010/12/15 16:28:08
Done.
| |
| 78 callback_; | 82 public: |
| 83 CallbackImpl(const base::WeakPtr<DiskCacheBasedSSLHostInfo>& obj, | |
| 84 void (DiskCacheBasedSSLHostInfo::*meth) (int)) | |
| 85 : obj_(obj), | |
| 86 meth_(meth) { | |
| 87 } | |
| 88 | |
| 89 virtual void RunWithParams(const Tuple1<int>& params) { | |
| 90 if (!obj_) { | |
| 91 delete this; | |
| 92 } else { | |
| 93 DispatchToMethod(obj_.get(), meth_, params); | |
| 94 } | |
| 95 } | |
| 96 | |
| 97 void* user_data; | |
|
willchan no longer on Chromium
2010/12/15 00:03:14
I see why you've done this, but this is also again
agl
2010/12/15 16:28:08
Rather than have the complexity of two callbacks (
| |
| 98 | |
| 99 protected: | |
| 100 base::WeakPtr<DiskCacheBasedSSLHostInfo> obj_; | |
| 101 void (DiskCacheBasedSSLHostInfo::*meth_) (int); | |
| 102 }; | |
| 103 | |
| 104 base::WeakPtrFactory<DiskCacheBasedSSLHostInfo> weak_ptr_factory_; | |
| 105 CallbackImpl* callback_; | |
| 79 State state_; | 106 State state_; |
| 80 bool ready_; | 107 bool ready_; |
| 81 std::string new_data_; | 108 std::string new_data_; |
| 82 const std::string hostname_; | 109 const std::string hostname_; |
| 83 HttpCache* const http_cache_; | 110 HttpCache* const http_cache_; |
| 84 disk_cache::Backend* backend_; | 111 disk_cache::Backend* backend_; |
|
rvargas (doing something else)
2010/12/15 02:00:16
Interesting. How do we make sure that this pointer
willchan no longer on Chromium
2010/12/15 02:14:25
The HttpCache hands out SSLHostInfos to the HttpNe
| |
| 85 disk_cache::Entry *entry_; | 112 disk_cache::Entry* entry_; |
| 86 CompletionCallback* user_callback_; | 113 CompletionCallback* user_callback_; |
| 87 scoped_refptr<net::IOBuffer> read_buffer_; | 114 scoped_refptr<net::IOBuffer> read_buffer_; |
| 88 scoped_refptr<net::IOBuffer> write_buffer_; | 115 scoped_refptr<net::IOBuffer> write_buffer_; |
| 89 std::string data_; | 116 std::string data_; |
| 90 }; | 117 }; |
| 91 | 118 |
| 92 } // namespace net | 119 } // namespace net |
| 93 | 120 |
| 94 #endif // NET_HTTP_DISK_CACHE_BASED_SSL_HOST_INFO_H | 121 #endif // NET_HTTP_DISK_CACHE_BASED_SSL_HOST_INFO_H |
| OLD | NEW |