25
void RGWObjManifest::obj_iterator::seek(uint64_t o)
28
if (manifest->explicit_objs) {
29
explicit_iter = manifest->objs.upper_bound(ofs);
30
if (explicit_iter != manifest->objs.begin()) {
33
if (ofs >= manifest->obj_size) {
34
ofs = manifest->obj_size;
37
update_explicit_pos();
41
if (o < manifest->get_head_size()) {
42
rule_iter = manifest->rules.begin();
44
stripe_size = manifest->get_head_size();
45
if (rule_iter != manifest->rules.end()) {
46
cur_part_id = rule_iter->second.start_part_num;
47
cur_override_prefix = rule_iter->second.override_prefix;
53
rule_iter = manifest->rules.upper_bound(ofs);
54
next_rule_iter = rule_iter;
55
if (rule_iter != manifest->rules.begin()) {
59
if (rule_iter == manifest->rules.end()) {
64
RGWObjManifestRule& rule = rule_iter->second;
66
if (rule.part_size > 0) {
67
cur_part_id = rule.start_part_num + (ofs - rule.start_ofs) / rule.part_size;
69
cur_part_id = rule.start_part_num;
71
part_ofs = rule.start_ofs + (cur_part_id - rule.start_part_num) * rule.part_size;
73
if (rule.stripe_max_size > 0) {
74
cur_stripe = (ofs - part_ofs) / rule.stripe_max_size;
76
stripe_ofs = part_ofs + cur_stripe * rule.stripe_max_size;
77
if (!cur_part_id && manifest->get_head_size() > 0) {
82
stripe_ofs = part_ofs;
85
if (!rule.part_size) {
86
stripe_size = rule.stripe_max_size;
87
stripe_size = MIN(manifest->get_obj_size() - stripe_ofs, stripe_size);
89
uint64_t next = MIN(stripe_ofs + rule.stripe_max_size, part_ofs + rule.part_size);
90
stripe_size = next - stripe_ofs;
93
cur_override_prefix = rule.override_prefix;
98
void RGWObjManifest::obj_iterator::update_location()
100
if (manifest->explicit_objs) {
101
location = explicit_iter->second.loc;
105
const rgw_obj& head = manifest->get_head();
107
if (ofs < manifest->get_head_size()) {
112
manifest->get_implicit_location(cur_part_id, cur_stripe, ofs, &cur_override_prefix, &location);
115
void RGWObjManifest::obj_iterator::update_explicit_pos()
117
ofs = explicit_iter->first;
120
map<uint64_t, RGWObjManifestPart>::iterator next_iter = explicit_iter;
122
if (next_iter != manifest->objs.end()) {
123
stripe_size = next_iter->first - ofs;
125
stripe_size = manifest->obj_size - ofs;
23
129
void RGWObjManifest::generate_test_instances(std::list<RGWObjManifest*>& o)
25
131
RGWObjManifest *m = new RGWObjManifest;
38
144
o.push_back(new RGWObjManifest);
147
void RGWObjManifest::get_implicit_location(uint64_t cur_part_id, uint64_t cur_stripe, uint64_t ofs, string *override_prefix, rgw_obj *location)
150
if (!override_prefix || override_prefix->empty()) {
153
oid = *override_prefix;
158
if (ofs < max_head_size) {
159
*location = head_obj;
163
snprintf(buf, sizeof(buf), "%d", (int)cur_stripe);
169
if (cur_stripe == 0) {
170
snprintf(buf, sizeof(buf), ".%d", (int)cur_part_id);
172
ns= RGW_OBJ_NS_MULTIPART;
174
snprintf(buf, sizeof(buf), ".%d_%d", (int)cur_part_id, (int)cur_stripe);
182
if (!tail_bucket.name.empty()) {
183
bucket = &tail_bucket;
185
bucket = &head_obj.bucket;
188
location->init_ns(*bucket, oid, ns);
41
193
void rgw_log_entry::generate_test_instances(list<rgw_log_entry*>& o)
43
195
rgw_log_entry *e = new rgw_log_entry;
95
247
static string rgw_uri_all_users = RGW_URI_ALL_USERS;
96
248
static string rgw_uri_auth_users = RGW_URI_AUTH_USERS;
250
ACLGroupTypeEnum ACLGrant::uri_to_group(string& uri)
252
// this is required for backward compatibility
253
return ACLGrant_S3::uri_to_group(uri);
256
ACLGroupTypeEnum ACLGrant_S3::uri_to_group(string& uri)
258
if (uri.compare(rgw_uri_all_users) == 0)
259
return ACL_GROUP_ALL_USERS;
260
else if (uri.compare(rgw_uri_auth_users) == 0)
261
return ACL_GROUP_AUTHENTICATED_USERS;
263
return ACL_GROUP_NONE;
98
266
void ACLGrant::generate_test_instances(list<ACLGrant*>& o)
100
268
string id, name, email;