Hermes  0.9.5-beta
Hierarchical Distributed I/O Buffering System
hermes_types.h File Reference
#include <glog/logging.h>
#include <stdint.h>
#include <functional>
#include <string>
#include <utility>
#include <vector>
#include "hermes_version.h"
Include dependency graph for hermes_types.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  hermes::ChunkedIdList
 
class  hermes::api::PlacementPolicyConv
 
struct  hermes::api::MinimizeIoTimeOptions
 
struct  hermes::api::Context
 
union  hermes::TargetID
 
struct  hermes::Thresholds
 
struct  hermes::Config
 
union  hermes::BucketID
 
union  hermes::VBucketID
 
union  hermes::BlobID
 

Namespaces

 hermes
 

Macros

#define KILOBYTES(n)   (((size_t)n) * 1024)
 
#define MEGABYTES(n)   (((size_t)n) * 1024 * 1024)
 
#define GIGABYTES(n)   (((size_t)n) * 1024UL * 1024UL * 1024UL)
 
#define HERMES_NOT_IMPLEMENTED_YET    LOG(FATAL) << __func__ << " not implemented yet\n"
 
#define HERMES_INVALID_CODE_PATH   LOG(FATAL) << "Invalid code path." << std::endl
 

Typedefs

typedef uint8_t hermes::u8
 
typedef uint16_t hermes::u16
 
typedef uint32_t hermes::u32
 
typedef uint64_t hermes::u64
 
typedef int8_t hermes::i8
 
typedef int16_t hermes::i16
 
typedef int32_t hermes::i32
 
typedef int64_t hermes::i64
 
typedef float hermes::f32
 
typedef double hermes::f64
 
typedef u16 hermes::DeviceID
 
typedef std::vector< unsigned char > hermes::api::Blob
 
using hermes::PlacementSchema = std::vector< std::pair< size_t, TargetID > >
 
typedef u64 hermes::TraitID
 

Enumerations

enum class  hermes::api::PlacementPolicy { kRandom , kRoundRobin , kMinimizeIoTime , kNone }
 
enum class  hermes::ProcessKind { hermes::kApp , hermes::kHermes , hermes::kCount }
 
enum  hermes::ArenaType { hermes::kArenaType_BufferPool , hermes::kArenaType_MetaData , hermes::kArenaType_Transient , hermes::kArenaType_Count }
 
enum class  hermes::api::TraitType : u8 { META = 0 , DATA = 1 , PERSIST = 2 }
 Trait types. More...
 

Variables

static constexpr int hermes::kMaxBufferPoolSlabs = 8
 
constexpr int hermes::kMaxPathLength = 256
 
constexpr int hermes::kMaxBufferPoolShmemNameLength = 64
 
constexpr int hermes::kMaxDevices = 8
 
constexpr int hermes::kMaxBucketNameSize = 256
 
constexpr int hermes::kMaxVBucketNameSize = 256
 
constexpr char hermes::kPlaceInHierarchy [] = "PlaceInHierarchy"
 
const TargetID hermes::kSwapTargetId = {{0, 0, 0}}
 
constexpr int hermes::kBucketIdStringSize = sizeof(BucketID) * 2
 
constexpr int hermes::kMaxBlobNameSize = 64 - kBucketIdStringSize
 

Detailed Description

Types used in Hermes.

Macro Definition Documentation

◆ KILOBYTES

#define KILOBYTES (   n)    (((size_t)n) * 1024)

KB

◆ MEGABYTES

#define MEGABYTES (   n)    (((size_t)n) * 1024 * 1024)

MB

◆ GIGABYTES

#define GIGABYTES (   n)    (((size_t)n) * 1024UL * 1024UL * 1024UL)

GB

◆ HERMES_NOT_IMPLEMENTED_YET

#define HERMES_NOT_IMPLEMENTED_YET    LOG(FATAL) << __func__ << " not implemented yet\n"

A definition for logging something that is not yet implemented

◆ HERMES_INVALID_CODE_PATH

#define HERMES_INVALID_CODE_PATH   LOG(FATAL) << "Invalid code path." << std::endl

A definition for logging invalid code path

Typedef Documentation

◆ Blob

typedef std::vector<unsigned char> hermes::api::Blob

A Blob is simply an uninterpreted vector of bytes.

Enumeration Type Documentation

◆ PlacementPolicy

Supported data placement policies

Enumerator
kRandom 

Random blob placement

kRoundRobin 

Round-Robin (around devices) blob placement

kMinimizeIoTime 

LP-based blob placement, minimize I/O time

kNone 

No DPE for cases we want it disabled

◆ TraitType

enum hermes::api::TraitType : u8
strong

Trait types.

Enumerator
META 

The Trait only modifies metadata.

DATA 

The Trait modifies raw data (Blobs).