![]() |
kinetic-c
v0.12.0
Seagate Kinetic Protocol Client Library for C
|
#include "kinetic_types.h"
#include "kinetic.pb-c.h"
#include "kinetic_countingsemaphore.h"
#include "kinetic_resourcewaiter_types.h"
#include "kinetic_resourcewaiter.h"
#include "kinetic_acl.h"
#include <netinet/in.h>
#include <ifaddrs.h>
#include <openssl/sha.h>
#include <time.h>
#include <pthread.h>
Go to the source code of this file.
Data Structures | |
struct | KineticClient |
Handle to the kinetic client, which is shared by all connections. More... | |
struct | KineticSession |
An instance of a session with a Kinetic device. More... | |
struct | KineticHMAC |
struct | KineticMessage |
struct | KineticRequest |
struct | KineticResponse |
struct | KineticOperation |
Macros | |
#define | KINETIC_MAX_OUTSTANDING_OPERATIONS_PER_SESSION (10) |
#define | KINETIC_SOCKET_DESCRIPTOR_INVALID (-1) |
#define | KINETIC_CONNECTION_TIMEOUT_SECS (30) /* Java simulator may take longer than 10 seconds to respond */ |
#define | KINETIC_OPERATION_TIMEOUT_SECS (20) |
#define | STATIC static |
#define | NUM_ELEMENTS(ARRAY) (sizeof(ARRAY)/sizeof((ARRAY)[0])) |
#define | KINETIC_SEQUENCE_NOT_YET_BOUND ((int64_t)-2) |
#define | PDU_HEADER_LEN (1 + (2 * sizeof(int32_t))) |
#define | PDU_PROTO_MAX_LEN (1024 * 1024) |
#define | PDU_PROTO_MAX_UNPACKED_LEN (PDU_PROTO_MAX_LEN * 2) |
#define | PDU_MAX_LEN |
Typedefs | |
typedef KineticStatus(* | KineticOperationCallback )(KineticOperation *const operation, KineticStatus const status) |
Enumerations | |
enum | unpack_error |
enum | socket_state |
enum | KineticPDUType |
Variables | |
KineticPDUHeader | |
#define KINETIC_MAX_OUTSTANDING_OPERATIONS_PER_SESSION (10) |
Definition at line 36 of file kinetic_types_internal.h.
#define KINETIC_SOCKET_DESCRIPTOR_INVALID (-1) |
Definition at line 37 of file kinetic_types_internal.h.
#define KINETIC_CONNECTION_TIMEOUT_SECS (30) /* Java simulator may take longer than 10 seconds to respond */ |
Definition at line 38 of file kinetic_types_internal.h.
#define KINETIC_OPERATION_TIMEOUT_SECS (20) |
Definition at line 39 of file kinetic_types_internal.h.
#define STATIC static |
Definition at line 46 of file kinetic_types_internal.h.
#define NUM_ELEMENTS | ( | ARRAY | ) | (sizeof(ARRAY)/sizeof((ARRAY)[0])) |
Definition at line 50 of file kinetic_types_internal.h.
#define KINETIC_SEQUENCE_NOT_YET_BOUND ((int64_t)-2) |
Definition at line 77 of file kinetic_types_internal.h.
#define PDU_HEADER_LEN (1 + (2 * sizeof(int32_t))) |
Definition at line 140 of file kinetic_types_internal.h.
#define PDU_PROTO_MAX_LEN (1024 * 1024) |
Definition at line 141 of file kinetic_types_internal.h.
#define PDU_PROTO_MAX_UNPACKED_LEN (PDU_PROTO_MAX_LEN * 2) |
Definition at line 142 of file kinetic_types_internal.h.
#define PDU_MAX_LEN |
Definition at line 143 of file kinetic_types_internal.h.
typedef KineticStatus(* KineticOperationCallback)(KineticOperation *const operation, KineticStatus const status) |
Definition at line 171 of file kinetic_types_internal.h.
enum unpack_error |
Enumerator | |
---|---|
UNPACK_ERROR_UNDEFINED | |
UNPACK_ERROR_SUCCESS | |
UNPACK_ERROR_INVALID_HEADER | |
UNPACK_ERROR_PAYLOAD_MALLOC_FAIL |
Definition at line 56 of file kinetic_types_internal.h.
enum socket_state |
Enumerator | |
---|---|
STATE_UNINIT | |
STATE_AWAITING_HEADER | |
STATE_AWAITING_BODY | |
STATE_UNINIT | |
STATE_AWAITING_HEADER | |
STATE_AWAITING_BODY |
Definition at line 71 of file kinetic_types_internal.h.
enum KineticPDUType |
Enumerator | |
---|---|
KINETIC_PDU_TYPE_INVALID | |
KINETIC_PDU_TYPE_REQUEST | |
KINETIC_PDU_TYPE_RESPONSE | |
KINETIC_PDU_TYPE_UNSOLICITED |
Definition at line 146 of file kinetic_types_internal.h.
struct __attribute__ | ( | (__packed__) | ) |
Definition at line 65 of file kinetic_types_internal.h.
Com__Seagate__Kinetic__Proto__Command__Algorithm Com__Seagate__Kinetic__Proto__Command__Algorithm_from_KineticAlgorithm | ( | KineticAlgorithm | kinteicAlgorithm | ) |
Definition at line 140 of file kinetic_types_internal.c.
References COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__CRC32, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__CRC64, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__INVALID_ALGORITHM, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__SHA1, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__SHA2, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__SHA3, KINETIC_ALGORITHM_CRC32, KINETIC_ALGORITHM_CRC64, KINETIC_ALGORITHM_INVALID, KINETIC_ALGORITHM_SHA1, KINETIC_ALGORITHM_SHA2, and KINETIC_ALGORITHM_SHA3.
KineticAlgorithm KineticAlgorithm_from_Com__Seagate__Kinetic__Proto__Command__Algorithm | ( | Com__Seagate__Kinetic__Proto__Command__Algorithm | protoAlgorithm | ) |
Definition at line 171 of file kinetic_types_internal.c.
References COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__CRC32, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__CRC64, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__INVALID_ALGORITHM, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__SHA1, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__SHA2, COM__SEAGATE__KINETIC__PROTO__COMMAND__ALGORITHM__SHA3, KINETIC_ALGORITHM_CRC32, KINETIC_ALGORITHM_CRC64, KINETIC_ALGORITHM_INVALID, KINETIC_ALGORITHM_SHA1, KINETIC_ALGORITHM_SHA2, and KINETIC_ALGORITHM_SHA3.
Com__Seagate__Kinetic__Proto__Command__Synchronization Com__Seagate__Kinetic__Proto__Command__Synchronization_from_KineticSynchronization | ( | KineticSynchronization | sync_mode | ) |
Definition at line 95 of file kinetic_types_internal.c.
References COM__SEAGATE__KINETIC__PROTO__COMMAND__SYNCHRONIZATION__FLUSH, COM__SEAGATE__KINETIC__PROTO__COMMAND__SYNCHRONIZATION__INVALID_SYNCHRONIZATION, COM__SEAGATE__KINETIC__PROTO__COMMAND__SYNCHRONIZATION__WRITEBACK, COM__SEAGATE__KINETIC__PROTO__COMMAND__SYNCHRONIZATION__WRITETHROUGH, KINETIC_SYNCHRONIZATION_FLUSH, KINETIC_SYNCHRONIZATION_INVALID, KINETIC_SYNCHRONIZATION_WRITEBACK, and KINETIC_SYNCHRONIZATION_WRITETHROUGH.
KineticSynchronization KineticSynchronization_from_Com__Seagate__Kinetic__Proto__Command__Synchronization | ( | Com__Seagate__Kinetic__Proto__Command__Synchronization | sync_mode | ) |
Definition at line 117 of file kinetic_types_internal.c.
References COM__SEAGATE__KINETIC__PROTO__COMMAND__SYNCHRONIZATION__FLUSH, COM__SEAGATE__KINETIC__PROTO__COMMAND__SYNCHRONIZATION__INVALID_SYNCHRONIZATION, COM__SEAGATE__KINETIC__PROTO__COMMAND__SYNCHRONIZATION__WRITEBACK, COM__SEAGATE__KINETIC__PROTO__COMMAND__SYNCHRONIZATION__WRITETHROUGH, KINETIC_SYNCHRONIZATION_FLUSH, KINETIC_SYNCHRONIZATION_INVALID, KINETIC_SYNCHRONIZATION_WRITEBACK, and KINETIC_SYNCHRONIZATION_WRITETHROUGH.
KineticStatus KineticProtoStatusCode_to_KineticStatus | ( | Com__Seagate__Kinetic__Proto__Command__Status__StatusCode | protoStatus | ) |
Definition at line 28 of file kinetic_types_internal.c.
References COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__DATA_ERROR, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__DEVICE_LOCKED, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__EXPIRED, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__HEADER_REQUIRED, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__HMAC_FAILURE, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__INTERNAL_ERROR, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__INVALID_REQUEST, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__INVALID_STATUS_CODE, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NESTED_OPERATION_ERRORS, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NO_SPACE, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NO_SUCH_HMAC_ALGORITHM, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NOT_ATTEMPTED, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NOT_AUTHORIZED, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__NOT_FOUND, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__PERM_DATA_ERROR, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__REMOTE_CONNECTION_ERROR, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__SERVICE_BUSY, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__SUCCESS, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__VERSION_FAILURE, COM__SEAGATE__KINETIC__PROTO__COMMAND__STATUS__STATUS_CODE__VERSION_MISMATCH, KINETIC_STATUS_CLUSTER_MISMATCH, KINETIC_STATUS_CONNECTION_ERROR, KINETIC_STATUS_DATA_ERROR, KINETIC_STATUS_DEVICE_BUSY, KINETIC_STATUS_DEVICE_LOCKED, KINETIC_STATUS_HMAC_FAILURE, KINETIC_STATUS_INVALID, KINETIC_STATUS_INVALID_REQUEST, KINETIC_STATUS_NOT_AUTHORIZED, KINETIC_STATUS_NOT_FOUND, KINETIC_STATUS_OPERATION_FAILED, KINETIC_STATUS_SUCCESS, and KINETIC_STATUS_VERSION_MISMATCH.
ByteArray ProtobufCBinaryData_to_ByteArray | ( | ProtobufCBinaryData | protoData | ) |
Definition at line 199 of file kinetic_types_internal.c.
References ByteArray::data.
bool Copy_ProtobufCBinaryData_to_ByteBuffer | ( | ByteBuffer | dest, |
ProtobufCBinaryData | src | ||
) |
Definition at line 208 of file kinetic_types_internal.c.
References ByteBuffer::array, ByteBuffer::bytesUsed, ByteArray::data, and ByteArray::len.
bool Copy_Com__Seagate__Kinetic__Proto__Command__KeyValue_to_KineticEntry | ( | Com__Seagate__Kinetic__Proto__Command__KeyValue * | keyValue, |
KineticEntry * | entry | ||
) |
Definition at line 226 of file kinetic_types_internal.c.
References KineticEntry::algorithm, ByteBuffer::array, ByteBuffer_Append(), ByteBuffer_Reset(), ByteBuffer::bytesUsed, ByteArray::data, KineticEntry::dbVersion, KineticEntry::key, KineticAlgorithm_from_Com__Seagate__Kinetic__Proto__Command__Algorithm(), ByteArray::len, LOG1, and KineticEntry::tag.
bool Copy_Com__Seagate__Kinetic__Proto__Command__Range_to_ByteBufferArray | ( | Com__Seagate__Kinetic__Proto__Command__Range * | keyRange, |
ByteBufferArray * | keys | ||
) |
Definition at line 277 of file kinetic_types_internal.c.
References ByteBufferArray::buffers, ByteBuffer_Append(), ByteBuffer_Reset(), ByteBufferArray::count, LOGF2, and ByteBufferArray::used.
int Kinetic_GetErrnoDescription | ( | int | err_num, |
char * | buf, | ||
size_t | len | ||
) |
Definition at line 294 of file kinetic_types_internal.c.
struct timeval Kinetic_TimevalZero | ( | void | ) |
Definition at line 308 of file kinetic_types_internal.c.
bool Kinetic_TimevalIsZero | ( | struct timeval const | tv | ) |
Definition at line 316 of file kinetic_types_internal.c.
struct timeval Kinetic_TimevalAdd | ( | struct timeval const | a, |
struct timeval const | b | ||
) |
Definition at line 321 of file kinetic_types_internal.c.
int Kinetic_TimevalCmp | ( | struct timeval const | a, |
struct timeval const | b | ||
) |
Definition at line 348 of file kinetic_types_internal.c.
References cmp_suseconds_t().
Com__Seagate__Kinetic__Proto__Command__GetLog__Type KineticLogInfo_Type_to_Com__Seagate__Kinetic__Proto__Command__GetLog__Type | ( | KineticLogInfo_Type | type | ) |
Definition at line 353 of file kinetic_types_internal.c.
References COM__SEAGATE__KINETIC__PROTO__COMMAND__GET_LOG__TYPE__CAPACITIES, COM__SEAGATE__KINETIC__PROTO__COMMAND__GET_LOG__TYPE__CONFIGURATION, COM__SEAGATE__KINETIC__PROTO__COMMAND__GET_LOG__TYPE__INVALID_TYPE, COM__SEAGATE__KINETIC__PROTO__COMMAND__GET_LOG__TYPE__LIMITS, COM__SEAGATE__KINETIC__PROTO__COMMAND__GET_LOG__TYPE__MESSAGES, COM__SEAGATE__KINETIC__PROTO__COMMAND__GET_LOG__TYPE__STATISTICS, COM__SEAGATE__KINETIC__PROTO__COMMAND__GET_LOG__TYPE__TEMPERATURES, COM__SEAGATE__KINETIC__PROTO__COMMAND__GET_LOG__TYPE__UTILIZATIONS, KINETIC_DEVICE_INFO_TYPE_CAPACITIES, KINETIC_DEVICE_INFO_TYPE_CONFIGURATION, KINETIC_DEVICE_INFO_TYPE_LIMITS, KINETIC_DEVICE_INFO_TYPE_MESSAGES, KINETIC_DEVICE_INFO_TYPE_STATISTICS, KINETIC_DEVICE_INFO_TYPE_TEMPERATURES, and KINETIC_DEVICE_INFO_TYPE_UTILIZATIONS.
KineticMessageType Com__Seagate__Kinetic__Proto__Command__MessageType_to_KineticMessageType | ( | Com__Seagate__Kinetic__Proto__Command__MessageType | type | ) |
Definition at line 379 of file kinetic_types_internal.c.
void KineticMessage_Init | ( | KineticMessage *const | message | ) |
Definition at line 395 of file kinetic_types_internal.c.
References KineticMessage::body, com__seagate__kinetic__proto__command__body__init(), com__seagate__kinetic__proto__command__get_log__device__init(), com__seagate__kinetic__proto__command__get_log__init(), com__seagate__kinetic__proto__command__header__init(), com__seagate__kinetic__proto__command__init(), com__seagate__kinetic__proto__command__key_value__init(), com__seagate__kinetic__proto__command__pin_operation__init(), com__seagate__kinetic__proto__command__range__init(), com__seagate__kinetic__proto__command__security__init(), com__seagate__kinetic__proto__command__setup__init(), com__seagate__kinetic__proto__command__status__init(), com__seagate__kinetic__proto__message__hmacauth__init(), com__seagate__kinetic__proto__message__init(), com__seagate__kinetic__proto__message__pinauth__init(), KineticMessage::command, KineticMessage::getLog, KineticMessage::getLogDevice, KineticMessage::header, KineticMessage::hmacAuth, KineticMessage::keyRange, KineticMessage::keyValue, KINETIC_ASSERT, KineticMessage::message, KineticMessage::pinAuth, KineticMessage::pinOp, KineticMessage::security, KineticMessage::setup, and KineticMessage::status.
void KineticRequest_Init | ( | KineticRequest * | reqeust, |
KineticSession const *const | session | ||
) |
Definition at line 430 of file kinetic_types_internal.c.
References KINETIC_ASSERT, KineticMessage_HeaderInit(), and KineticMessage_Init().
KineticPDUHeader |
Definition at line 69 of file kinetic_types_internal.h.