blob: ddd12c1bd4778b82b9261e9e2dcc729292978faa [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.ignite.internal.client.thin;
import java.util.HashMap;
import java.util.Map;
import org.apache.ignite.client.ClientOperationType;
import org.jetbrains.annotations.Nullable;
/** Operation codes. */
public enum ClientOperation {
/** Resource close. */
RESOURCE_CLOSE(0),
/** Heartbeat. */
HEARTBEAT(1),
/** Get idle timeout. */
GET_IDLE_TIMEOUT(2),
/** Cache get or create with name. */
CACHE_GET_OR_CREATE_WITH_NAME(1052),
/** Cache put. */
CACHE_PUT(1001),
/** Cache get. */
CACHE_GET(1000),
/** Cache create with configuration. */
CACHE_CREATE_WITH_CONFIGURATION(1053),
/** Cache get names. */
CACHE_GET_NAMES(1050),
/** Cache destroy. */
CACHE_DESTROY(1056),
/** Cache get or create with configuration. */
CACHE_GET_OR_CREATE_WITH_CONFIGURATION(1054),
/** Cache create with name. */
CACHE_CREATE_WITH_NAME(1051),
/** Cache contains key. */
CACHE_CONTAINS_KEY(1011),
/** Cache contains keys. */
CACHE_CONTAINS_KEYS(1012),
/** Cache get configuration. */
CACHE_GET_CONFIGURATION(1055),
/** Get size. */
CACHE_GET_SIZE(1020),
/** Put all. */
CACHE_PUT_ALL(1004),
/** Get all. */
CACHE_GET_ALL(1003),
/** Cache replace if equals. */
CACHE_REPLACE_IF_EQUALS(1010),
/** Cache replace. */
CACHE_REPLACE(1009),
/** Cache remove key. */
CACHE_REMOVE_KEY(1016),
/** Cache remove if equals. */
CACHE_REMOVE_IF_EQUALS(1017),
/** Cache remove keys. */
CACHE_REMOVE_KEYS(1018),
/** Cache remove all. */
CACHE_REMOVE_ALL(1019),
/** Cache get and put. */
CACHE_GET_AND_PUT(1005),
/** Cache get and remove. */
CACHE_GET_AND_REMOVE(1007),
/** Cache get and replace. */
CACHE_GET_AND_REPLACE(1006),
/** Cache put if absent. */
CACHE_PUT_IF_ABSENT(1002),
/** Cache get and put if absent. */
CACHE_GET_AND_PUT_IF_ABSENT(1008),
/** Cache clear. */
CACHE_CLEAR(1013),
/** Cache clear key. */
CACHE_CLEAR_KEY(1014),
/** Cache clear keys. */
CACHE_CLEAR_KEYS(1015),
/** Cache put all conflict. */
CACHE_PUT_ALL_CONFLICT(1022),
/** Cache remove all conflict. */
CACHE_REMOVE_ALL_CONFLICT(1023),
/** Cache partitions. */
CACHE_PARTITIONS(1101),
/** Query scan. */
QUERY_SCAN(2000),
/** Query scan cursor get page. */
QUERY_SCAN_CURSOR_GET_PAGE(2001),
/** Query sql. */
QUERY_SQL(2002),
/** Query sql cursor get page. */
QUERY_SQL_CURSOR_GET_PAGE(2003),
/** Query sql fields. */
QUERY_SQL_FIELDS(2004),
/** Query sql fields cursor get page. */
QUERY_SQL_FIELDS_CURSOR_GET_PAGE(2005),
/** Continuous query. */
QUERY_CONTINUOUS(2006),
/** Continuous query event. */
QUERY_CONTINUOUS_EVENT(2007, ClientNotificationType.CONTINUOUS_QUERY_EVENT),
/** Index query event. */
QUERY_INDEX(2008),
/** Query index cursor get page. */
QUERY_INDEX_CURSOR_GET_PAGE(2009),
/** Get binary type name. */
GET_BINARY_TYPE_NAME(3000),
/** Register binary type name. */
REGISTER_BINARY_TYPE_NAME(3001),
/** Get binary type. */
GET_BINARY_TYPE(3002),
/** Put binary type. */
PUT_BINARY_TYPE(3003),
/** Get binary configuration. */
GET_BINARY_CONFIGURATION(3004),
/** Start new transaction. */
TX_START(4000),
/** End the transaction (commit or rollback). */
TX_END(4001),
/** Get cluster state. */
CLUSTER_GET_STATE(5000),
/** Change cluster state. */
CLUSTER_CHANGE_STATE(5001),
/** Get WAL state. */
CLUSTER_GET_WAL_STATE(5003),
/** Change WAL state. */
CLUSTER_CHANGE_WAL_STATE(5002),
/** Get nodes IDs by filter. */
CLUSTER_GROUP_GET_NODE_IDS(5100),
/** Get nodes info by IDs. */
CLUSTER_GROUP_GET_NODE_INFO(5101),
/** Execute compute task. */
COMPUTE_TASK_EXECUTE(6000),
/** Finished compute task notification. */
COMPUTE_TASK_FINISHED(6001, ClientNotificationType.COMPUTE_TASK_FINISHED),
/** Invoke service. */
SERVICE_INVOKE(7000),
/** Get service descriptors. */
SERVICE_GET_DESCRIPTORS(7001),
/** Get service descriptors. */
SERVICE_GET_DESCRIPTOR(7002),
/** Get or create an AtomicLong by name. */
ATOMIC_LONG_CREATE(9000),
/** Remove an AtomicLong. */
ATOMIC_LONG_REMOVE(9001),
/** Check if AtomicLong exists. */
ATOMIC_LONG_EXISTS(9002),
/** AtomicLong.get. */
ATOMIC_LONG_VALUE_GET(9003),
/** AtomicLong.addAndGet (also covers incrementAndGet, getAndIncrement, getAndAdd, decrementAndGet, getAndDecrement). */
ATOMIC_LONG_VALUE_ADD_AND_GET(9004),
/** AtomicLong.getAndSet. */
ATOMIC_LONG_VALUE_GET_AND_SET(9005),
/** AtomicLong.compareAndSet. */
ATOMIC_LONG_VALUE_COMPARE_AND_SET(9006),
/** AtomicLong.compareAndSetAndGet. */
ATOMIC_LONG_VALUE_COMPARE_AND_SET_AND_GET(9007),
/** Create an IgniteSet. */
OP_SET_GET_OR_CREATE(9010),
/** Remove an IgniteSet. */
OP_SET_CLOSE(9011),
/** Check if IgniteSet exists. */
OP_SET_EXISTS(9012),
/** IgniteSet.add. */
OP_SET_VALUE_ADD(9013),
/** IgniteSet.addAll. */
OP_SET_VALUE_ADD_ALL(9014),
/** IgniteSet.remove. */
OP_SET_VALUE_REMOVE(9015),
/** IgniteSet.removeAll. */
OP_SET_VALUE_REMOVE_ALL(9016),
/** IgniteSet.contains. */
OP_SET_VALUE_CONTAINS(9017),
/** IgniteSet.containsAll. */
OP_SET_VALUE_CONTAINS_ALL(9018),
/** IgniteSet.retainAll. */
OP_SET_VALUE_RETAIN_ALL(9019),
/** IgniteSet.size. */
OP_SET_SIZE(9020),
/** IgniteSet.clear. */
OP_SET_CLEAR(9021),
/** IgniteSet.iterator. */
OP_SET_ITERATOR_START(9022),
/** IgniteSet.iterator page. */
OP_SET_ITERATOR_GET_PAGE(9023);
/** Code. */
private final int code;
/** Type of notification. */
private final ClientNotificationType notificationType;
/** Constructor. */
ClientOperation(int code) {
this(code, null);
}
/** Constructor. */
ClientOperation(int code, ClientNotificationType notificationType) {
this.code = code;
this.notificationType = notificationType;
}
/**
* @return Code.
*/
public short code() {
return (short)code;
}
/**
* @return Type of notification.
*/
public ClientNotificationType notificationType() {
return notificationType;
}
/**
* Converts this internal operation code to public {@link ClientOperationType}.
*
* @return Corresponding {@link ClientOperationType}, or {@code null} if there is no match.
* Some operations, such as {@link #RESOURCE_CLOSE}, do not have a public counterpart.
*/
@Nullable public ClientOperationType toPublicOperationType() {
switch (this) {
case CACHE_GET_OR_CREATE_WITH_NAME:
case CACHE_GET_OR_CREATE_WITH_CONFIGURATION:
return ClientOperationType.CACHE_GET_OR_CREATE;
case CACHE_CREATE_WITH_CONFIGURATION:
case CACHE_CREATE_WITH_NAME:
return ClientOperationType.CACHE_CREATE;
case CACHE_PUT:
return ClientOperationType.CACHE_PUT;
case CACHE_GET:
return ClientOperationType.CACHE_GET;
case CACHE_GET_NAMES:
return ClientOperationType.CACHE_GET_NAMES;
case CACHE_DESTROY:
return ClientOperationType.CACHE_DESTROY;
case CACHE_CONTAINS_KEY:
return ClientOperationType.CACHE_CONTAINS_KEY;
case CACHE_CONTAINS_KEYS:
return ClientOperationType.CACHE_CONTAINS_KEYS;
case CACHE_GET_CONFIGURATION:
return ClientOperationType.CACHE_GET_CONFIGURATION;
case CACHE_GET_SIZE:
return ClientOperationType.CACHE_GET_SIZE;
case CACHE_PUT_ALL:
return ClientOperationType.CACHE_PUT_ALL;
case CACHE_GET_ALL:
return ClientOperationType.CACHE_GET_ALL;
case CACHE_REPLACE_IF_EQUALS:
case CACHE_REPLACE:
return ClientOperationType.CACHE_REPLACE;
case CACHE_REMOVE_KEY:
case CACHE_REMOVE_IF_EQUALS:
return ClientOperationType.CACHE_REMOVE_ONE;
case CACHE_REMOVE_KEYS:
return ClientOperationType.CACHE_REMOVE_MULTIPLE;
case CACHE_REMOVE_ALL:
return ClientOperationType.CACHE_REMOVE_EVERYTHING;
case CACHE_GET_AND_PUT:
return ClientOperationType.CACHE_GET_AND_PUT;
case CACHE_GET_AND_REMOVE:
return ClientOperationType.CACHE_GET_AND_REMOVE;
case CACHE_GET_AND_REPLACE:
return ClientOperationType.CACHE_GET_AND_REPLACE;
case CACHE_PUT_IF_ABSENT:
return ClientOperationType.CACHE_PUT_IF_ABSENT;
case CACHE_GET_AND_PUT_IF_ABSENT:
return ClientOperationType.CACHE_GET_AND_PUT_IF_ABSENT;
case CACHE_CLEAR:
return ClientOperationType.CACHE_CLEAR_EVERYTHING;
case CACHE_CLEAR_KEY:
return ClientOperationType.CACHE_CLEAR_ONE;
case CACHE_CLEAR_KEYS:
return ClientOperationType.CACHE_CLEAR_MULTIPLE;
case QUERY_SCAN:
return ClientOperationType.QUERY_SCAN;
case QUERY_SQL:
case QUERY_SQL_FIELDS:
return ClientOperationType.QUERY_SQL;
case QUERY_CONTINUOUS:
return ClientOperationType.QUERY_CONTINUOUS;
case QUERY_INDEX:
return ClientOperationType.QUERY_INDEX;
case TX_START:
return ClientOperationType.TRANSACTION_START;
case CLUSTER_GET_STATE:
return ClientOperationType.CLUSTER_GET_STATE;
case CLUSTER_CHANGE_STATE:
return ClientOperationType.CLUSTER_CHANGE_STATE;
case CLUSTER_GET_WAL_STATE:
return ClientOperationType.CLUSTER_GET_WAL_STATE;
case CLUSTER_CHANGE_WAL_STATE:
return ClientOperationType.CLUSTER_CHANGE_WAL_STATE;
case CLUSTER_GROUP_GET_NODE_IDS:
case CLUSTER_GROUP_GET_NODE_INFO:
return ClientOperationType.CLUSTER_GROUP_GET_NODES;
case COMPUTE_TASK_EXECUTE:
return ClientOperationType.COMPUTE_TASK_EXECUTE;
case SERVICE_INVOKE:
return ClientOperationType.SERVICE_INVOKE;
case SERVICE_GET_DESCRIPTORS:
return ClientOperationType.SERVICE_GET_DESCRIPTORS;
case SERVICE_GET_DESCRIPTOR:
return ClientOperationType.SERVICE_GET_DESCRIPTOR;
case ATOMIC_LONG_CREATE:
return ClientOperationType.ATOMIC_LONG_CREATE;
case ATOMIC_LONG_REMOVE:
return ClientOperationType.ATOMIC_LONG_REMOVE;
case ATOMIC_LONG_EXISTS:
return ClientOperationType.ATOMIC_LONG_EXISTS;
case ATOMIC_LONG_VALUE_GET:
return ClientOperationType.ATOMIC_LONG_VALUE_GET;
case ATOMIC_LONG_VALUE_ADD_AND_GET:
return ClientOperationType.ATOMIC_LONG_VALUE_ADD_AND_GET;
case ATOMIC_LONG_VALUE_GET_AND_SET:
return ClientOperationType.ATOMIC_LONG_VALUE_GET_AND_SET;
case ATOMIC_LONG_VALUE_COMPARE_AND_SET:
case ATOMIC_LONG_VALUE_COMPARE_AND_SET_AND_GET:
return ClientOperationType.ATOMIC_LONG_VALUE_COMPARE_AND_SET;
case OP_SET_GET_OR_CREATE:
return ClientOperationType.SET_GET_OR_CREATE;
case OP_SET_CLOSE:
return ClientOperationType.SET_REMOVE;
case OP_SET_EXISTS:
return ClientOperationType.SET_EXISTS;
case OP_SET_VALUE_ADD:
return ClientOperationType.SET_VALUE_ADD;
case OP_SET_VALUE_ADD_ALL:
return ClientOperationType.SET_VALUE_ADD_ALL;
case OP_SET_VALUE_REMOVE:
return ClientOperationType.SET_VALUE_REMOVE;
case OP_SET_VALUE_REMOVE_ALL:
return ClientOperationType.SET_VALUE_REMOVE_ALL;
case OP_SET_VALUE_CONTAINS:
return ClientOperationType.SET_VALUE_CONTAINS;
case OP_SET_VALUE_CONTAINS_ALL:
return ClientOperationType.SET_VALUE_CONTAINS_ALL;
case OP_SET_VALUE_RETAIN_ALL:
return ClientOperationType.SET_VALUE_RETAIN_ALL;
case OP_SET_SIZE:
return ClientOperationType.SET_SIZE;
case OP_SET_CLEAR:
return ClientOperationType.SET_CLEAR;
case OP_SET_ITERATOR_START:
return ClientOperationType.SET_ITERATOR;
default:
return null;
}
}
/** Enum mapping from code to values. */
private static final Map<Short, ClientOperation> map;
static {
map = new HashMap<>();
for (ClientOperation op : values())
map.put(op.code(), op);
}
/**
* @param code Code to convert to enum.
* @return Enum.
*/
@Nullable public static ClientOperation fromCode(short code) {
return map.get(code);
}
}