#include <libhyppo.h>
#include <stdio.h>
#include <ctype.h>
#include <wchar.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/xattr.h>
#include <attr/xattr.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/statvfs.h>
#include <glib.h>
#include <fuse.h>
Strutture dati | |
| struct | HyppoSB |
| struct | StateDesc |
| struct | HyppoNode |
| struct | HyppoNodeC |
| struct | OpenFileDesc |
| struct | SQLAtom |
| struct | SQL_over_Hyppo |
Definizioni | |
| #define | _LARGEFILE64_SOURCE |
| #define | __USE_LARGEFILE64 |
| #define | _FILE_OFFSET_BITS 64 |
| #define | _GNU_SOURCE 1 |
| #define | _XOPEN_SOURCE 600 |
| #define | FUSE_USE_VERSION 25 |
| #define | HYPPO_VERSION_MAJOR 0 |
| #define | HYPPO_VERSION_MINOR 1 |
| #define | HYPPOCAMPUS_SYSTEM_FILENAME ".hyppo" |
| #define | HEADER_INODE_IDENTIFIER 0xFFFFFFFFLL |
| #define | EMPTY_INODE_IDENTIFIER 0x00000000LL |
| #define | HYPPO_MAX_VALUE_SIZE 256 |
| #define | MAX_NODES_IN_CACHE 100 |
| #define | INODES_IN_ARRAY 100 |
| #define | META_KEY_HASH 10 |
| #define | FREE_BLOCKS_OFFSET 128 |
| #define | DEBUG |
| #define | DBG() |
Tipi enumerati (enum) | |
| enum | BOOLEAN_OPERATORS { SQL_INVALID_OP, SQL_OP_AND, SQL_OP_OR } |
| enum | COMPARISON_OPERATOR { EQUAL_OP, MINOR_OP, MAJOR_OP, MINOR_EQUAL_OP, MAJOR_EQUAL_OP, MATCH_OP, CONTAIN_OP, REGEXP_OP, END_OPS } |
| #define _LARGEFILE64_SOURCE |
| #define __USE_LARGEFILE64 |
| #define _FILE_OFFSET_BITS 64 |
| #define _GNU_SOURCE 1 |
| #define _XOPEN_SOURCE 600 |
| #define FUSE_USE_VERSION 25 |
| #define HYPPO_VERSION_MAJOR 0 |
Major version della qui presente versione di Hyppocampus
| #define HYPPO_VERSION_MINOR 1 |
Minor version della qui presente versione di Hyppocampus
| #define HYPPOCAMPUS_SYSTEM_FILENAME ".hyppo" |
File che conserva la struttura del filesystem simulato per mezzo di FUSE
| #define HEADER_INODE_IDENTIFIER 0xFFFFFFFFLL |
Identificativo di header: se un nodo (HyppoNode) presenta nel campo "prev" questo valore, indica che li inizia un nuovo array di metadati, il cui tipo e' specificato nel campo "file" del nodo stesso
| #define EMPTY_INODE_IDENTIFIER 0x00000000LL |
Identificativo di un nodo vuoto: questo valore viene testato col campo "prev" di un nodo (HyppoNode), ma in realta' l'intero elemento dovrebbe essere settato a 0
| #define HYPPO_MAX_VALUE_SIZE 256 |
Dimensione massima del campo "value" del nodo (HyppoNode), ovvero la grandezza massima del metadato che puo' ospitare
| #define MAX_NODES_IN_CACHE 100 |
Numero massimo di elementi tenuti nella cache interna
| #define INODES_IN_ARRAY 100 |
Numero di metadati ammessi all'interno di una partizione relazionale
| #define META_KEY_HASH 10 |
Numero di partizioni relazionali installate
| #define FREE_BLOCKS_OFFSET 128 |
Offset presso cui si trova il numero di nodi vuoti all'interno di un array di metadati nella rappresentazione dell'header dell'array stesso
| #define DEBUG |
| #define DBG | ( | ) |
Valore:
G_STMT_START { \
fprintf ( stderr, "DBG[%5d] %20s(): ", __LINE__, __FUNCTION__ ); \
fprintf ( stderr, __VA_ARGS__ ); \
fprintf ( stderr, "\n" ); \
} G_STMT_END
| enum BOOLEAN_OPERATORS |
Operatori booleani ammessi per la concatenazione degli statements SQL durante le richieste al filesystem
| SQL_INVALID_OP | Operatore invalido: in SQLAtom::bool_op e SQL_over_Hyppo::m_operator indica che la struttura rappresenta un insieme di valori e non un operatore booleano |
| SQL_OP_AND | AND insiemistico: vanno prelevati gli elementi che si trovano nell'intersezione tra l'insieme a destra e l'insieme a sinistra dell'operatore |
| SQL_OP_OR | OR insiemistico: vanno prelevati tutti gli elementi che si trovano nell'insieme a destra e nell'insieme a sinistra dell'operatore |
| enum COMPARISON_OPERATOR |
Operatori ammessi per il confronto tra un metadato ed un valore. Qui vengono elencati tutti quelli previsti, ma essi si dividono in base alla natura del metadato richiesto e al tipo di valore che ammette
1.4.7