#define _BLUESKY_H
#include <stdint.h>
+#include <stdio.h>
#include <inttypes.h>
#include <glib.h>
const BlueSkyRangesetItem *bluesky_rangeset_lookup(BlueSkyRangeset *rangeset,
uint64_t offset);
const BlueSkyRangesetItem *bluesky_rangeset_lookup_next(BlueSkyRangeset *rangeset, uint64_t offset);
+void bluesky_rangeset_get_extents(BlueSkyRangeset *rangeset,
+ uint64_t *start, uint64_t *length);
/* Storage interface. This presents a key-value store abstraction, and can
* have multiple implementations: in-memory, on-disk, in-cloud. */
/* Symlink-specific fields */
gchar *symlink_contents;
+
+ /* A field for short-term use internally while the lock is held. */
+ gpointer private_data;
} BlueSkyInode;
/* A directory entry. The name is UTF-8 and is a freshly-allocated string.
void bluesky_debug_dump(BlueSkyFS *fs);
+/* Request response time tracking. */
+typedef struct BlueSkyProfile {
+ int magic;
+ GMutex *lock;
+ char *description;
+ GList *events;
+} BlueSkyProfile;
+
+BlueSkyProfile *bluesky_profile_new();
+void bluesky_profile_free(BlueSkyProfile *profile);
+void bluesky_profile_add_event(BlueSkyProfile *profile, char *message);
+void bluesky_profile_print(BlueSkyProfile *profile);
+BlueSkyProfile *bluesky_profile_get();
+void bluesky_profile_set(BlueSkyProfile *profile);
+void bluesky_profile_set_output(FILE *stream);
+
#ifdef __cplusplus
}
#endif