Verified Commit 73f1b768 authored by Tommaso Tocci's avatar Tommaso Tocci
Browse files

Make metadata class global

Metadata class needs to be used by both the client and the daemon
parent 880634fd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
#define IFS_METADENTRY_HPP

#include <daemon/adafs_daemon.hpp>
#include <daemon/classes/metadata.hpp>
#include <global/metadata.hpp>
#include <preload/preload_util.hpp>

int create_node(const std::string& path, const uid_t uid, const gid_t gid, mode_t mode);
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@


#include "rocksdb/merge_operator.h"
#include <daemon/classes/metadata.hpp>
#include "global/metadata.hpp"

namespace rdb = rocksdb;

+17 −37
Original line number Diff line number Diff line

#ifndef FS_METADATA_H
#define FS_METADATA_H
#pragma once

#include <daemon/adafs_daemon.hpp>

class Metadata {
#include "global/configure.hpp"
#include <sys/types.h>
#include <string>


class Metadata {
private:
    time_t atime_;         // access time. gets updated on file access unless mounted with noatime
    time_t mtime_;         // modify time. gets updated when file content is modified.
@@ -13,65 +16,42 @@ private:
    uid_t uid_;
    gid_t gid_;
    mode_t mode_;
    uint64_t inode_no_;
    unsigned long inode_no_;
    nlink_t link_count_;   // number of names for this inode (hardlinks)
    size_t size_;          // size_ in bytes, might be computed instead of stored
    blkcnt_t blocks_;      // allocated file system blocks_

public:
    Metadata();

    Metadata(mode_t mode);

    Metadata(std::string db_val);

    void init_ACM_time();
    std::string serialize() const;

    void init_ACM_time();
    void update_ACM_time(bool a, bool c, bool m);

    std::string serialize() const;

    //Getter and Setter
    time_t atime() const;

    void atime(time_t atime_);

    time_t mtime() const;

    void mtime(time_t mtime_);

    time_t ctime() const;

    void ctime(time_t ctime_);

    uid_t uid() const;

    void uid(uid_t uid_);

    gid_t gid() const;

    void gid(gid_t gid_);

    mode_t mode() const;

    void mode(mode_t mode_);

    uint64_t inode_no() const;

    void inode_no(uint64_t inode_no_);

    unsigned long inode_no() const;
    void inode_no(unsigned long inode_no_);
    nlink_t link_count() const;

    void link_count(nlink_t link_count_);

    size_t size() const;

    void size(size_t size_);

    blkcnt_t blocks() const;

    void blocks(blkcnt_t blocks_);

};


+2 −2
Original line number Diff line number Diff line
@@ -5,11 +5,11 @@ set(DAEMON_SRC
    ../global/rpc/rpc_utils.cpp
    ../global/global_func.cpp
    ../global/path_util.cpp
    ../global/metadata.cpp
    adafs_daemon.cpp
    adafs_ops/metadentry.cpp
    classes/fs_data.cpp
    classes/rpc_data.cpp
    classes/metadata.cpp
    handler/h_metadentry.cpp
    handler/h_data.cpp
    handler/h_preload.cpp
@@ -23,10 +23,10 @@ set(DAEMON_HEADERS
    ../../include/global/rpc/rpc_types.hpp
    ../../include/global/rpc/rpc_utils.hpp
    ../../include/global/path_util.hpp
    ../../include/global/metadata.hpp
    ../../include/daemon/adafs_daemon.hpp
    ../../include/daemon/adafs_ops/metadentry.hpp
    ../../include/daemon/classes/fs_data.hpp
    ../../include/daemon/classes/metadata.hpp
    ../../include/daemon/classes/rpc_data.hpp
    ../../include/daemon/handler/rpc_defs.hpp
    )
+34 −36
Original line number Diff line number Diff line
@@ -101,13 +101,8 @@ void update_metadentry(const string& path, Metadata& md) {
 * @return errno
 */
int check_access_mask(const string& path, const int mask) {
    Metadata md;
    try {
        md = get_metadentry(path);
    } catch (const NotFoundException& e) {
        return ENOENT;
    }

        Metadata md = get_metadentry_str(path);
        /*
         * if only check if file exists is wanted, return success.
         * According to POSIX (access(2)) the mask is either the value F_OK,
@@ -144,6 +139,9 @@ int check_access_mask(const string& path, const int mask) {
            return 0;
        }

    } catch (const NotFoundException& e) {
        return ENOENT;
    }
    return EACCES;
}

Loading