-
Notifications
You must be signed in to change notification settings - Fork 39
/
map_policy.rb
54 lines (48 loc) · 1.99 KB
/
map_policy.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# encoding: utf-8
# Copyright 2016-2020 Aerospike, Inc.
#
# Portions may be licensed to Aerospike, Inc. under one or more contributor
# license agreements.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
module Aerospike
module CDT
class MapPolicy
attr_accessor :order, :write_mode, :flags, :item_command, :items_command, :attributes, :persist_index
def initialize(order: nil, write_mode: nil, persist_index: false, flags: nil)
if write_mode && flags
raise ArgumentError, "Use write mode for server versions < 4.3; use write flags for server versions >= 4.3."
end
@order = order || MapOrder::DEFAULT
@write_mode = write_mode || MapWriteMode::DEFAULT
@flags = flags || MapWriteFlags::DEFAULT
@attributes = order ? order[:attr] : 0
if @persist_index
@attributes |= 0x10
end
case @write_mode
when CDT::MapWriteMode::DEFAULT
@item_command = CDT::MapOperation::PUT
@items_command = CDT::MapOperation::PUT_ITEMS
when CDT::MapWriteMode::UPDATE_ONLY
@item_command = CDT::MapOperation::REPLACE
@items_command = CDT::MapOperation::REPLACE_ITEMS
when CDT::MapWriteMode::CREATE_ONLY
@item_command = CDT::MapOperation::ADD
@items_command = CDT::MapOperation::ADD_ITEMS
else
raise Exceptions.new(ResultCode::PARAMETER_ERROR, "invalid value for MapWriteMode #{write_mode}")
end
end
DEFAULT = MapPolicy.new
end
end
end