| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef NET_DISK_CACHE_SIMPLE_SIMPLE_ENTRY_OPERATION_H_ | |
| 6 #define NET_DISK_CACHE_SIMPLE_SIMPLE_ENTRY_OPERATION_H_ | |
| 7 | |
| 8 #include "base/memory/ref_counted.h" | |
| 9 #include "net/base/completion_callback.h" | |
| 10 #include "net/base/net_log.h" | |
| 11 | |
| 12 namespace net { | |
| 13 class IOBuffer; | |
| 14 } | |
| 15 | |
| 16 namespace disk_cache { | |
| 17 | |
| 18 class Entry; | |
| 19 class SimpleEntryImpl; | |
| 20 | |
| 21 // SimpleEntryOperation stores the information regarding operations in | |
| 22 // SimpleEntryImpl, between the moment they are issued by users of the backend, | |
| 23 // and the moment when they are executed. | |
| 24 class SimpleEntryOperation { | |
| 25 public: | |
| 26 typedef net::CompletionCallback CompletionCallback; | |
| 27 | |
| 28 enum EntryOperationType { | |
| 29 TYPE_OPEN = 0, | |
| 30 TYPE_CREATE = 1, | |
| 31 TYPE_CLOSE = 2, | |
| 32 TYPE_READ = 3, | |
| 33 TYPE_WRITE = 4, | |
| 34 TYPE_READ_SPARSE = 5, | |
| 35 TYPE_WRITE_SPARSE = 6, | |
| 36 TYPE_GET_AVAILABLE_RANGE = 7, | |
| 37 TYPE_DOOM = 8, | |
| 38 }; | |
| 39 | |
| 40 SimpleEntryOperation(const SimpleEntryOperation& other); | |
| 41 ~SimpleEntryOperation(); | |
| 42 | |
| 43 static SimpleEntryOperation OpenOperation(SimpleEntryImpl* entry, | |
| 44 bool have_index, | |
| 45 const CompletionCallback& callback, | |
| 46 Entry** out_entry); | |
| 47 static SimpleEntryOperation CreateOperation( | |
| 48 SimpleEntryImpl* entry, | |
| 49 bool have_index, | |
| 50 const CompletionCallback& callback, | |
| 51 Entry** out_entry); | |
| 52 static SimpleEntryOperation CloseOperation(SimpleEntryImpl* entry); | |
| 53 static SimpleEntryOperation ReadOperation(SimpleEntryImpl* entry, | |
| 54 int index, | |
| 55 int offset, | |
| 56 int length, | |
| 57 net::IOBuffer* buf, | |
| 58 const CompletionCallback& callback, | |
| 59 bool alone_in_queue); | |
| 60 static SimpleEntryOperation WriteOperation( | |
| 61 SimpleEntryImpl* entry, | |
| 62 int index, | |
| 63 int offset, | |
| 64 int length, | |
| 65 net::IOBuffer* buf, | |
| 66 bool truncate, | |
| 67 bool optimistic, | |
| 68 const CompletionCallback& callback); | |
| 69 static SimpleEntryOperation ReadSparseOperation( | |
| 70 SimpleEntryImpl* entry, | |
| 71 int64 sparse_offset, | |
| 72 int length, | |
| 73 net::IOBuffer* buf, | |
| 74 const CompletionCallback& callback); | |
| 75 static SimpleEntryOperation WriteSparseOperation( | |
| 76 SimpleEntryImpl* entry, | |
| 77 int64 sparse_offset, | |
| 78 int length, | |
| 79 net::IOBuffer* buf, | |
| 80 const CompletionCallback& callback); | |
| 81 static SimpleEntryOperation GetAvailableRangeOperation( | |
| 82 SimpleEntryImpl* entry, | |
| 83 int64 sparse_offset, | |
| 84 int length, | |
| 85 int64* out_start, | |
| 86 const CompletionCallback& callback); | |
| 87 static SimpleEntryOperation DoomOperation( | |
| 88 SimpleEntryImpl* entry, | |
| 89 const CompletionCallback& callback); | |
| 90 | |
| 91 bool ConflictsWith(const SimpleEntryOperation& other_op) const; | |
| 92 // Releases all references. After calling this operation, SimpleEntryOperation | |
| 93 // will only hold POD members. | |
| 94 void ReleaseReferences(); | |
| 95 | |
| 96 EntryOperationType type() const { | |
| 97 return static_cast<EntryOperationType>(type_); | |
| 98 } | |
| 99 const CompletionCallback& callback() const { return callback_; } | |
| 100 Entry** out_entry() { return out_entry_; } | |
| 101 bool have_index() const { return have_index_; } | |
| 102 int index() const { return index_; } | |
| 103 int offset() const { return offset_; } | |
| 104 int64 sparse_offset() const { return sparse_offset_; } | |
| 105 int length() const { return length_; } | |
| 106 int64* out_start() { return out_start_; } | |
| 107 net::IOBuffer* buf() { return buf_.get(); } | |
| 108 bool truncate() const { return truncate_; } | |
| 109 bool optimistic() const { return optimistic_; } | |
| 110 bool alone_in_queue() const { return alone_in_queue_; } | |
| 111 | |
| 112 private: | |
| 113 SimpleEntryOperation(SimpleEntryImpl* entry, | |
| 114 net::IOBuffer* buf, | |
| 115 const CompletionCallback& callback, | |
| 116 Entry** out_entry, | |
| 117 int offset, | |
| 118 int64 sparse_offset, | |
| 119 int length, | |
| 120 int64* out_start, | |
| 121 EntryOperationType type, | |
| 122 bool have_index, | |
| 123 int index, | |
| 124 bool truncate, | |
| 125 bool optimistic, | |
| 126 bool alone_in_queue); | |
| 127 | |
| 128 // This ensures entry will not be deleted until the operation has ran. | |
| 129 scoped_refptr<SimpleEntryImpl> entry_; | |
| 130 scoped_refptr<net::IOBuffer> buf_; | |
| 131 CompletionCallback callback_; | |
| 132 | |
| 133 // Used in open and create operations. | |
| 134 Entry** out_entry_; | |
| 135 | |
| 136 // Used in write and read operations. | |
| 137 const int offset_; | |
| 138 const int64 sparse_offset_; | |
| 139 const int length_; | |
| 140 | |
| 141 // Used in get available range operations. | |
| 142 int64* const out_start_; | |
| 143 | |
| 144 const EntryOperationType type_; | |
| 145 // Used in open and create operations. | |
| 146 const bool have_index_; | |
| 147 // Used in write and read operations. | |
| 148 const unsigned int index_; | |
| 149 // Used only in write operations. | |
| 150 const bool truncate_; | |
| 151 const bool optimistic_; | |
| 152 // Used only in SimpleCache.ReadIsParallelizable histogram. | |
| 153 const bool alone_in_queue_; | |
| 154 }; | |
| 155 | |
| 156 } // namespace disk_cache | |
| 157 | |
| 158 #endif // NET_DISK_CACHE_SIMPLE_SIMPLE_ENTRY_OPERATION_H_ | |
| OLD | NEW |