blob: c36b2142b8a6493df5d8b02019b52174ae38f5ae [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.
*/
// This file contains protocol buffers that are shared throughout HBase
package hbase.pb;
option java_package = "org.apache.hadoop.hbase.protobuf.generated";
option java_outer_classname = "HBaseProtos";
option java_generate_equals_and_hash = true;
option optimize_for = SPEED;
import "Cell.proto";
/**
* Table Name
*/
message TableName {
required bytes namespace = 1;
required bytes qualifier = 2;
}
/**
* Table Schema
* Inspired by the rest TableSchema
*/
message TableSchema {
optional TableName table_name = 1;
repeated BytesBytesPair attributes = 2;
repeated ColumnFamilySchema column_families = 3;
repeated NameStringPair configuration = 4;
}
/** Denotes state of the table */
message TableState {
// Table's current state
enum State {
ENABLED = 0;
DISABLED = 1;
DISABLING = 2;
ENABLING = 3;
}
// This is the table's state.
required State state = 1;
}
/**
* Column Family Schema
* Inspired by the rest ColumSchemaMessage
*/
message ColumnFamilySchema {
required bytes name = 1;
repeated BytesBytesPair attributes = 2;
repeated NameStringPair configuration = 3;
}
/**
* Protocol buffer version of HRegionInfo.
*/
message RegionInfo {
required uint64 region_id = 1;
required TableName table_name = 2;
optional bytes start_key = 3;
optional bytes end_key = 4;
optional bool offline = 5;
optional bool split = 6;
optional int32 replica_id = 7 [default = 0];
}
/**
* Protocol buffer for favored nodes
*/
message FavoredNodes {
repeated ServerName favored_node = 1;
}
/**
* Container protocol buffer to specify a region.
* You can specify region by region name, or the hash
* of the region name, which is known as encoded
* region name.
*/
message RegionSpecifier {
required RegionSpecifierType type = 1;
required bytes value = 2;
enum RegionSpecifierType {
// <tablename>,<startkey>,<regionId>.<encodedName>
REGION_NAME = 1;
// hash of <tablename>,<startkey>,<regionId>
ENCODED_REGION_NAME = 2;
}
}
/**
* A range of time. Both from and to are Java time
* stamp in milliseconds. If you don't specify a time
* range, it means all time. By default, if not
* specified, from = 0, and to = Long.MAX_VALUE
*/
message TimeRange {
optional uint64 from = 1;
optional uint64 to = 2;
}
/* ColumnFamily Specific TimeRange */
message ColumnFamilyTimeRange {
required bytes column_family = 1;
required TimeRange time_range = 2;
}
/* Comparison operators */
enum CompareType {
LESS = 0;
LESS_OR_EQUAL = 1;
EQUAL = 2;
NOT_EQUAL = 3;
GREATER_OR_EQUAL = 4;
GREATER = 5;
NO_OP = 6;
}
/**
* Protocol buffer version of ServerName
*/
message ServerName {
required string host_name = 1;
optional uint32 port = 2;
optional uint64 start_code = 3;
}
// Comment data structures
message Coprocessor {
required string name = 1;
}
message NameStringPair {
required string name = 1;
required string value = 2;
}
message NameBytesPair {
required string name = 1;
optional bytes value = 2;
}
message BytesBytesPair {
required bytes first = 1;
required bytes second = 2;
}
message NameInt64Pair {
optional string name = 1;
optional int64 value = 2;
}
/**
* Description of the snapshot to take
*/
message SnapshotDescription {
required string name = 1;
optional string table = 2; // not needed for delete, but checked for in taking snapshot
optional int64 creation_time = 3 [default = 0];
enum Type {
DISABLED = 0;
FLUSH = 1;
SKIPFLUSH = 2;
}
optional Type type = 4 [default = FLUSH];
optional int32 version = 5;
optional string owner = 6;
}
/**
* Description of the distributed procedure to take
*/
message ProcedureDescription {
required string signature = 1; // the unique signature of the procedure
optional string instance = 2; // the procedure instance name
optional int64 creation_time = 3 [default = 0];
repeated NameStringPair configuration = 4;
}
message EmptyMsg {
}
enum TimeUnit {
NANOSECONDS = 1;
MICROSECONDS = 2;
MILLISECONDS = 3;
SECONDS = 4;
MINUTES = 5;
HOURS = 6;
DAYS = 7;
}
message LongMsg {
required int64 long_msg = 1;
}
message DoubleMsg {
required double double_msg = 1;
}
message BigDecimalMsg {
required bytes bigdecimal_msg = 1;
}
message UUID {
required uint64 least_sig_bits = 1;
required uint64 most_sig_bits = 2;
}
message NamespaceDescriptor {
required bytes name = 1;
repeated NameStringPair configuration = 2;
}
// Rpc client version info proto. Included in ConnectionHeader on connection setup
message VersionInfo {
required string version = 1;
required string url = 2;
required string revision = 3;
required string user = 4;
required string date = 5;
required string src_checksum = 6;
optional uint32 version_major = 7;
optional uint32 version_minor = 8;
}
/**
* Description of the region server info
*/
message RegionServerInfo {
optional int32 infoPort = 1;
optional VersionInfo version_info = 2;
}