This repository has been archived by the owner on Feb 11, 2022. It is now read-only.
forked from aerospike/aerospike-client-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cdt.go
125 lines (113 loc) · 4.33 KB
/
cdt.go
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// Copyright 2013-2019 Aerospike, Inc.
//
// Portions may be licensed to Aerospike, Inc. under one or more contributor
// license agreements WHICH ARE COMPATIBLE WITH THE APACHE LICENSE, VERSION 2.0.
//
// 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.
package aerospike
func newCDTCreateOperationEncoder(op *Operation, packer BufferEx) (int, error) {
if op.binValue != nil {
if params := op.binValue.(ListValue); len(params) > 0 {
return packCDTIfcParamsAsArray(packer, int16(*op.opSubType), op.binValue.(ListValue))
}
}
return packCDTParamsAsArray(packer, int16(*op.opSubType))
}
func newCDTCreateOperationValues2(command int, attributes mapOrderType, binName string, value1 interface{}, value2 interface{}) *Operation {
return &Operation{
opType: MAP_MODIFY,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{value1, value2, IntegerValue(attributes)}),
encoder: newCDTCreateOperationEncoder,
}
}
func newCDTCreateOperationValues0(command int, typ OperationType, binName string) *Operation {
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
// binValue: NewNullValue(),
encoder: newCDTCreateOperationEncoder,
}
}
func newCDTCreateOperationValuesN(command int, typ OperationType, binName string, values []interface{}, returnType mapReturnType) *Operation {
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{IntegerValue(returnType), ListValue(values)}),
encoder: newCDTCreateOperationEncoder,
}
}
func newCDTCreateOperationValue1(command int, typ OperationType, binName string, value interface{}, returnType mapReturnType) *Operation {
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{IntegerValue(returnType), value}),
encoder: newCDTCreateOperationEncoder,
}
}
func newCDTCreateOperationIndex(command int, typ OperationType, binName string, index int, returnType mapReturnType) *Operation {
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{IntegerValue(returnType), index}),
encoder: newCDTCreateOperationEncoder,
}
}
func newCDTCreateOperationIndexCount(command int, typ OperationType, binName string, index int, count int, returnType mapReturnType) *Operation {
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{IntegerValue(returnType), index, count}),
encoder: newCDTCreateOperationEncoder,
}
}
func newCDTMapCreateOperationRelativeIndex(command int, typ OperationType, binName string, key Value, index int, returnType mapReturnType) *Operation {
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{IntegerValue(returnType), key, index}),
encoder: newCDTCreateOperationEncoder,
}
}
func newCDTMapCreateOperationRelativeIndexCount(command int, typ OperationType, binName string, key Value, index int, count int, returnType mapReturnType) *Operation {
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{IntegerValue(returnType), key, index, count}),
encoder: newCDTCreateOperationEncoder,
}
}
func newCDTCreateRangeOperation(command int, typ OperationType, binName string, begin interface{}, end interface{}, returnType mapReturnType) *Operation {
if end == nil {
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{IntegerValue(returnType), begin}),
encoder: newCDTCreateOperationEncoder,
}
}
return &Operation{
opType: typ,
opSubType: &command,
binName: binName,
binValue: ListValue([]interface{}{IntegerValue(returnType), begin, end}),
encoder: newCDTCreateOperationEncoder,
}
}