Commit 6cd2c444 authored by Greg Williams's avatar Greg Williams
Browse files

Refactored KineticConnection into KineticSession.

Consolidated some type initializers into KineticAllocator.
parent 3101c91a
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -107,11 +107,6 @@ struct _KineticClient;
typedef struct _KineticClient KineticClient;


/**
 * @brief Kinetic connection instance
 */
struct _KineticConnection;

/**
 * @brief Structure used to specify the configuration for a session.
 */
+0 −9
Original line number Diff line number Diff line
@@ -78,7 +78,6 @@ KineticStatus KineticAdminClient_SecureErase(KineticSession * const session,
    ByteArray pin)
{
    assert(session != NULL);
    assert(session->connection != NULL);

    KineticStatus status;
    status = KineticAuth_EnsureSslEnabled(&session->config);
@@ -100,7 +99,6 @@ KineticStatus KineticAdminClient_InstantErase(KineticSession * const session,
    ByteArray pin)
{
    assert(session != NULL);
    assert(session->connection != NULL);

    KineticStatus status;
    status = KineticAuth_EnsureSslEnabled(&session->config);
@@ -143,7 +141,6 @@ KineticStatus KineticAdminClient_LockDevice(KineticSession * const session,
    ByteArray pin)
{
    assert(session != NULL);
    assert(session->connection != NULL);

    KineticStatus status;
    status = KineticAuth_EnsureSslEnabled(&session->config);
@@ -165,7 +162,6 @@ KineticStatus KineticAdminClient_UnlockDevice(KineticSession * const session,
    ByteArray pin)
{
    assert(session != NULL);
    assert(session->connection != NULL);

    KineticStatus status;
    status = KineticAuth_EnsureSslEnabled(&session->config);
@@ -189,7 +185,6 @@ KineticStatus KineticAdminClient_GetLog(KineticSession * const session,
                                   KineticCompletionClosure* closure)
{
    assert(session != NULL);
    assert(session->connection != NULL);
    assert(info != NULL);

    KineticProto_Command_GetLog_Type protoType =
@@ -214,7 +209,6 @@ KineticStatus KineticAdminClient_GetDeviceSpecificLog(KineticSession * const ses
                                   KineticCompletionClosure* closure)
{
    assert(session != NULL);
    assert(session->connection != NULL);
    assert(info != NULL);

    KineticOperation* operation = KineticAllocator_NewOperation(session);
@@ -242,7 +236,6 @@ KineticStatus KineticAdminClient_SetClusterVersion(KineticSession * const sessio
    int64_t version)
{
    assert(session != NULL);
    assert(session->connection != NULL);

    KineticOperation* operation = KineticAllocator_NewOperation(session);
    if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;}
@@ -254,7 +247,6 @@ KineticStatus KineticAdminClient_SetClusterVersion(KineticSession * const sessio
KineticStatus KineticAdminClient_SetACL(KineticSession * const session,
        const char *ACLPath) {
    assert(session != NULL);
    assert(session->connection != NULL);
    if (ACLPath == NULL) {
        return KINETIC_STATUS_INVALID_REQUEST;
    }
@@ -286,7 +278,6 @@ KineticStatus KineticAdminClient_UpdateFirmware(KineticSession * const session,
    char const * const fw_path)
{
    assert(session != NULL);
    assert(session->connection != NULL);

    KineticOperation* operation = KineticAllocator_NewOperation(session);
    if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;}
+8 −25
Original line number Diff line number Diff line
@@ -38,13 +38,15 @@ KineticSession* KineticAllocator_NewSession(struct bus * b, KineticSessionConfig
        return NULL;
    }

    // Copy the supplied config into the session config
    // Deep copy the supplied config internally
    session->config = *config;
    memcpy(session->config.keyData, config->hmacKey.data, config->hmacKey.len);
    // Update pointer to copy of key data
    session->config.hmacKey.data = session->config.keyData;
    strncpy(session->config.host, config->host, sizeof(session->config.host));
    session->timeoutSeconds = config->timeoutSeconds;
    session->timeoutSeconds = config->timeoutSeconds; // TODO: Eliminate this, since already in config?
    KineticResourceWaiter_Init(&session->connectionReady);
    session->messageBus = b;
    session->socket = -1;  // start with an invalid file descriptor

    return session;
}
@@ -52,31 +54,11 @@ KineticSession* KineticAllocator_NewSession(struct bus * b, KineticSessionConfig
void KineticAllocator_FreeSession(KineticSession* session)
{
    if (session != NULL) {
        KineticResourceWaiter_Destroy(&session->connectionReady);
        KineticFree(session);
    }
}

KineticConnection* KineticAllocator_NewConnection(struct bus * b, KineticSession* const session)
{
    KineticConnection* connection = KineticCalloc(1, sizeof(KineticConnection));
    if (connection == NULL) {
        LOG0("Failed allocating new Connection!");
        return NULL;
    }
    KineticResourceWaiter_Init(&connection->connectionReady);
    connection->pSession = session;
    connection->messageBus = b;
    connection->socket = -1;  // start with an invalid file descriptor
    return connection;
}

void KineticAllocator_FreeConnection(KineticConnection* connection)
{
    KINETIC_ASSERT(connection != NULL);
    KineticResourceWaiter_Destroy(&connection->connectionReady);
    KineticFree(connection);
}

KineticResponse * KineticAllocator_NewKineticResponse(size_t const valueLength)
{
    KineticResponse * response = KineticCalloc(1, sizeof(*response) + valueLength);
@@ -111,7 +93,8 @@ KineticOperation* KineticAllocator_NewOperation(KineticSession* const session)
        LOGF0("Failed allocating new operation on session %p", (void*)session);
        return NULL;
    }
    KineticOperation_Init(newOperation, session);
    newOperation->session = session;
    newOperation->timeoutSeconds = session->timeoutSeconds; // TODO: use timeout in config throughput
    newOperation->request = (KineticRequest*)KineticCalloc(1, sizeof(KineticRequest));
    if (newOperation->request == NULL) {
        LOGF0("Failed allocating new PDU on session %p", (void*)session);
+0 −6
Original line number Diff line number Diff line
@@ -26,12 +26,6 @@
KineticSession* KineticAllocator_NewSession(struct bus * b, KineticSessionConfig* config);
void KineticAllocator_FreeSession(KineticSession* session);

KineticConnection* KineticAllocator_NewConnection(struct bus * b, KineticSession* const session);
void KineticAllocator_FreeConnection(KineticConnection* connection);

KineticRequest* KineticAllocator_NewPDU(KineticConnection* connection);
void KineticAllocator_FreePDU(KineticRequest* pdu);

KineticOperation* KineticAllocator_NewOperation(KineticSession* const session);
void KineticAllocator_FreeOperation(KineticOperation* operation);

+9 −9
Original line number Diff line number Diff line
@@ -86,11 +86,11 @@ STATIC bool unpack_header(uint8_t const * const read_buf, size_t const read_size
}

STATIC bus_sink_cb_res_t sink_cb(uint8_t *read_buf,
        size_t read_size, void *socket_udata) {

    KineticConnection * connection = (KineticConnection *)socket_udata;
    KINETIC_ASSERT(connection);
    socket_info *si = connection->si;
        size_t read_size, void *socket_udata)
{
    KineticSession * session = (KineticSession*)socket_udata;
    KINETIC_ASSERT(session);
    socket_info *si = session->si;
    KINETIC_ASSERT(si);

    switch (si->state) {
@@ -179,8 +179,8 @@ static void log_response_seq_id(int fd, int64_t seq_id) {
}

STATIC bus_unpack_cb_res_t unpack_cb(void *msg, void *socket_udata) {
    KineticConnection * connection = (KineticConnection *)socket_udata;
    KINETIC_ASSERT(connection);
    KineticSession * session = (KineticSession*)socket_udata;
    KINETIC_ASSERT(session);
    
    /* just got .full_msg_buffer from sink_cb -- pass it along as-is */
    socket_info *si = (socket_info *)msg;
@@ -226,14 +226,14 @@ STATIC bus_unpack_cb_res_t unpack_cb(void *msg, void *socket_udata) {
        {
            if (response->proto->has_authType &&
                response->proto->authType == KINETIC_PROTO_MESSAGE_AUTH_TYPE_UNSOLICITEDSTATUS
                && connection->connectionID == 0)
                && session->connectionID == 0)
            {
                /* Ignore the unsolicited status message on connect. */
                seq_id = BUS_NO_SEQ_ID;
            } else {
                seq_id = response->command->header->ackSequence;
            }
            log_response_seq_id(connection->socket, seq_id);
            log_response_seq_id(session->socket, seq_id);
        }

        bus_unpack_cb_res_t res = {
Loading