21 #ifndef _KINETIC_TYPES_INTERNAL_H
22 #define _KINETIC_TYPES_INTERNAL_H
30 #include <netinet/in.h>
32 #include <openssl/sha.h>
36 #define KINETIC_MAX_OUTSTANDING_OPERATIONS_PER_SESSION (10)
37 #define KINETIC_SOCKET_DESCRIPTOR_INVALID (-1)
38 #define KINETIC_CONNECTION_TIMEOUT_SECS (30)
39 #define KINETIC_OPERATION_TIMEOUT_SECS (20)
50 #define NUM_ELEMENTS(ARRAY) (sizeof(ARRAY)/sizeof((ARRAY)[0]))
66 uint8_t versionPrefix;
67 uint32_t protobufLength;
77 #define KINETIC_SEQUENCE_NOT_YET_BOUND ((int64_t)-2)
106 typedef struct _KineticHMAC {
114 typedef struct _KineticMessage {
118 Com__Seagate__Kinetic__Proto__Message
message;
119 Com__Seagate__Kinetic__Proto__Message__HMACauth
hmacAuth;
120 Com__Seagate__Kinetic__Proto__Message__PINauth
pinAuth;
124 Com__Seagate__Kinetic__Proto__Command
command;
125 Com__Seagate__Kinetic__Proto__Command__Header
header;
126 Com__Seagate__Kinetic__Proto__Command__Body
body;
127 Com__Seagate__Kinetic__Proto__Command__Status
status;
128 Com__Seagate__Kinetic__Proto__Command__Security
security;
129 Com__Seagate__Kinetic__Proto__Command__Security__ACL
acl;
130 Com__Seagate__Kinetic__Proto__Command__KeyValue
keyValue;
131 Com__Seagate__Kinetic__Proto__Command__Range
keyRange;
132 Com__Seagate__Kinetic__Proto__Command__Setup
setup;
133 Com__Seagate__Kinetic__Proto__Command__GetLog
getLog;
136 Com__Seagate__Kinetic__Proto__Command__PinOperation
pinOp;
140 #define PDU_HEADER_LEN (1 + (2 * sizeof(int32_t)))
141 #define PDU_PROTO_MAX_LEN (1024 * 1024)
142 #define PDU_PROTO_MAX_UNPACKED_LEN (PDU_PROTO_MAX_LEN * 2)
143 #define PDU_MAX_LEN (PDU_HEADER_LEN + \
144 PDU_PROTO_MAX_LEN + KINETIC_OBJ_SIZE)
156 Com__Seagate__Kinetic__Proto__Command*
command;
160 typedef struct _KineticResponse
163 Com__Seagate__Kinetic__Proto__Message*
proto;
164 Com__Seagate__Kinetic__Proto__Command*
command;
204 ProtobufCBinaryData protoData);
208 Com__Seagate__Kinetic__Proto__Command__KeyValue* keyValue,
KineticEntry* entry);
210 Com__Seagate__Kinetic__Proto__Command__Range* keyRange,
ByteBufferArray* keys);
224 #endif // _KINETIC_TYPES_INTERNAL_H
Handle to the kinetic client, which is shared by all connections.
Com__Seagate__Kinetic__Proto__Command__GetLog__Type KineticLogInfo_Type_to_Com__Seagate__Kinetic__Proto__Command__GetLog__Type(KineticLogInfo_Type type)
Structure for handling generic arrays of bytes.
KineticSynchronization
Enumeration of synchronization types for an operation on a KineticEntry.
KineticOperationCallback opCallback
Com__Seagate__Kinetic__Proto__Command__MessageType
Structure for an embedded ByteArray as a buffer.
KineticSessionConfig config
session configuration which is a deep copy of client configuration supplied to KienticClient_CreateSe...
Com__Seagate__Kinetic__Proto__Command__PinOperation pinOp
uint16_t timeoutSeconds
Default response timeout.
bool Copy_Com__Seagate__Kinetic__Proto__Command__Range_to_ByteBufferArray(Com__Seagate__Kinetic__Proto__Command__Range *keyRange, ByteBufferArray *keys)
Structure used to specify the configuration for a session.
Com__Seagate__Kinetic__Proto__Command__Range keyRange
#define KINETIC_HMAC_MAX_LEN
HMAC max length.
socket_info * si
pointer to socket information
Com__Seagate__Kinetic__Proto__Command__Algorithm
KineticResponse * response
Com__Seagate__Kinetic__Proto__Command__Synchronization
Com__Seagate__Kinetic__Proto__Message * proto
bool Kinetic_TimevalIsZero(struct timeval const tv)
KineticLogInfo ** deviceInfo
bool connected
state of connection
Com__Seagate__Kinetic__Proto__Command__GetLog__Device getLogDevice
Com__Seagate__Kinetic__Proto__Command__Status status
ByteBufferArray * buffers
int Kinetic_TimevalCmp(struct timeval const a, struct timeval const b)
KineticAlgorithm
Enumeration of encryption/checksum key algorithms.
Com__Seagate__Kinetic__Proto__Message message
struct timeval Kinetic_TimevalAdd(struct timeval const a, struct timeval const b)
void KineticRequest_Init(KineticRequest *reqeust, KineticSession const *const session)
ByteArray ProtobufCBinaryData_to_ByteArray(ProtobufCBinaryData protoData)
int socket
socket file descriptor
void KineticMessage_Init(KineticMessage *const message)
Com__Seagate__Kinetic__Proto__Command__GetLog__Type
Closure which can be specified for operations which support asynchronous mode.
struct __attribute__((__packed__)) _KineticPDUHeader
int64_t pendingClusterVersion
KineticLogInfo_Type
Log info type.
Base log info structure which is allocated by client and passed to KineticAdminClient_GetLog.
KineticStatus(* KineticOperationCallback)(KineticOperation *const operation, KineticStatus const status)
Com__Seagate__Kinetic__Proto__Command__Header header
Com__Seagate__Kinetic__Proto__Message__PINauth pinAuth
KineticMessageType Com__Seagate__Kinetic__Proto__Command__MessageType_to_KineticMessageType(Com__Seagate__Kinetic__Proto__Command__MessageType type)
Com__Seagate__Kinetic__Proto__Command__Algorithm Com__Seagate__Kinetic__Proto__Command__Algorithm_from_KineticAlgorithm(KineticAlgorithm kinteicAlgorithm)
bool Copy_ProtobufCBinaryData_to_ByteBuffer(ByteBuffer dest, ProtobufCBinaryData src)
bool Copy_Com__Seagate__Kinetic__Proto__Command__KeyValue_to_KineticEntry(Com__Seagate__Kinetic__Proto__Command__KeyValue *keyValue, KineticEntry *entry)
An instance of a session with a Kinetic device.
struct timeval Kinetic_TimevalZero(void)
Com__Seagate__Kinetic__Proto__Command * command
Com__Seagate__Kinetic__Proto__Command__Body body
KineticSynchronization KineticSynchronization_from_Com__Seagate__Kinetic__Proto__Command__Synchronization(Com__Seagate__Kinetic__Proto__Command__Synchronization sync_mode)
KineticStatus terminationStatus
reported status upon device termination (SUCCESS if not terminated)
Com__Seagate__Kinetic__Proto__Command__Security__ACL__HMACAlgorithm
Com__Seagate__Kinetic__Proto__Command__Security__ACL__HMACAlgorithm algorithm
Com__Seagate__Kinetic__Proto__Command__KeyValue keyValue
Com__Seagate__Kinetic__Proto__Command__Security security
int64_t connectionID
initialized to seconds since epoch
Com__Seagate__Kinetic__Proto__Command__GetLog getLog
Com__Seagate__Kinetic__Proto__Command__Security__ACL acl
KineticResourceWaiter connectionReady
connection ready status (set to true once connectionID recieved)
Com__Seagate__Kinetic__Proto__Command__Setup setup
KineticStatus
Kinetic status codes.
KineticMessageType
Log info message types.
Com__Seagate__Kinetic__Proto__Command command
KineticCompletionClosure closure
Com__Seagate__Kinetic__Proto__Command__GetLog__Type getLogType
int64_t sequence
increments for each request in a session
Com__Seagate__Kinetic__Proto__Command__Synchronization Com__Seagate__Kinetic__Proto__Command__Synchronization_from_KineticSynchronization(KineticSynchronization sync_mode)
Com__Seagate__Kinetic__Proto__Command * command
KineticStatus KineticProtoStatusCode_to_KineticStatus(Com__Seagate__Kinetic__Proto__Command__Status__StatusCode protoStatus)
Com__Seagate__Kinetic__Proto__Message__HMACauth hmacAuth
Com__Seagate__Kinetic__Proto__Command__Status__StatusCode
KineticAlgorithm KineticAlgorithm_from_Com__Seagate__Kinetic__Proto__Command__Algorithm(Com__Seagate__Kinetic__Proto__Command__Algorithm protoAlgorithm)
KineticP2P_Operation * p2pOp
KineticCountingSemaphore * outstandingOperations
counting semaphore to only allows the configured number of outstanding operation at a given time ...
int Kinetic_GetErrnoDescription(int err_num, char *buf, size_t len)
struct bus * messageBus
pointer to message bus instance
pthread_mutex_t sendMutex
mutex for locking around seq count acquisision, PDU packing, and transfer to threadpool ...