Sha256: 20ddd5508b345423efb9a1eca0020d031467cd6ed9938bada575ea45d7d763ce

Contents?: true

Size: 1.37 KB

Versions: 13

Compression:

Stored size: 1.37 KB

Contents

/*
 * MessagePack for C TimeStamp
 *
 * Copyright (C) 2018 KONDO Takatoshi
 *
 *    Distributed under the Boost Software License, Version 1.0.
 *    (See accompanying file LICENSE_1_0.txt or copy at
 *    http://www.boost.org/LICENSE_1_0.txt)
 */
#ifndef MSGPACK_TIMESTAMP_H
#define MSGPACK_TIMESTAMP_H

#include <msgpack/object.h>

#ifdef __cplusplus
extern "C" {
#endif


typedef struct msgpack_timestamp {
    int64_t tv_sec;
    uint32_t tv_nsec;
} msgpack_timestamp;

static inline bool msgpack_object_to_timestamp(const msgpack_object* obj, msgpack_timestamp* ts) {
    if (obj->type != MSGPACK_OBJECT_EXT) return false;
    if (obj->via.ext.type != -1) return false;
    switch (obj->via.ext.size) {
    case 4:
        ts->tv_nsec = 0;
        {
            uint32_t v;
            _msgpack_load32(uint32_t, obj->via.ext.ptr, &v);
            ts->tv_sec = v;
        }
        return true;
    case 8: {
        uint64_t value;
        _msgpack_load64(uint64_t, obj->via.ext.ptr, &value);
        ts->tv_nsec = (uint32_t)(value >> 34);
        ts->tv_sec = value & 0x00000003ffffffffLL;
        return true;
    }
    case 12:
        _msgpack_load32(uint32_t, obj->via.ext.ptr, &ts->tv_nsec);
        _msgpack_load64(int64_t, obj->via.ext.ptr + 4, &ts->tv_sec);
        return true;
    default:
        return false;
    }
}


#ifdef __cplusplus
}
#endif

#endif /* msgpack/timestamp.h */

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
script_core-0.3.2 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.3.0 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
sq_detailed_metrics-0.1.0 include/msgpack/timestamp.h
script_core-0.2.7 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.2.6 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.2.5 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.2.4 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.2.3 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.2.2 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.2.1 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.2.0 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.1.1 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h
script_core-0.1.0 ext/enterprise_script_service/msgpack/include/msgpack/timestamp.h