diff --git a/include/communication/bolt/v1/config.hpp b/include/communication/bolt/v1/config.hpp index afd953f91..fcec2a207 100644 --- a/include/communication/bolt/v1/config.hpp +++ b/include/communication/bolt/v1/config.hpp @@ -7,8 +7,11 @@ namespace bolt namespace config { - static constexpr size_t N = 65535; /* chunk size */ - static constexpr size_t C = N + 2; /* end mark */ + /** chunk size */ + static constexpr size_t N = 65535; + + /** end mark */ + static constexpr size_t C = N + 2; } } diff --git a/include/communication/bolt/v1/packing/types.hpp b/include/communication/bolt/v1/packing/types.hpp index d840c3f42..d561fdc3f 100644 --- a/include/communication/bolt/v1/packing/types.hpp +++ b/include/communication/bolt/v1/packing/types.hpp @@ -5,17 +5,38 @@ namespace bolt enum class PackType { - Null, // denotes absence of a value - Boolean, // denotes a type with two possible values (t/f) - Integer, // 64-bit signed integral number - Float, // 64-bit floating point number - Bytes, // binary data - String, // unicode string - List, // collection of values - Map, // collection of zero or more key/value pairs - Struct, // zero or more packstream values - EndOfStream, // denotes stream value end - Reserved // reserved for future use + /** denotes absence of a value */ + Null, + + /** denotes a type with two possible values (t/f) */ + Boolean, + + /** 64-bit signed integral number */ + Integer, + + /** 64-bit floating point number */ + Float, + + /** binary data */ + Bytes, + + /** unicode string */ + String, + + /** collection of values */ + List, + + /** collection of zero or more key/value pairs */ + Map, + + /** zero or more packstream values */ + Struct, + + /** denotes stream value end */ + EndOfStream, + + /** reserved for future use */ + Reserved }; } diff --git a/include/communication/bolt/v1/serialization/bolt_serializer.hpp b/include/communication/bolt/v1/serialization/bolt_serializer.hpp index 884702462..fe59a154c 100644 --- a/include/communication/bolt/v1/serialization/bolt_serializer.hpp +++ b/include/communication/bolt/v1/serialization/bolt_serializer.hpp @@ -27,7 +27,7 @@ class BoltSerializer public: BoltSerializer(Stream &stream) : encoder(stream) {} - /* Serializes the vertex accessor into the packstream format + /** Serializes the vertex accessor into the packstream format * * struct[size = 3] Vertex [signature = 0x4E] { * Integer node_id; @@ -64,7 +64,7 @@ public: } } - /* Serializes the vertex accessor into the packstream format + /** Serializes the vertex accessor into the packstream format * * struct[size = 5] Edge [signature = 0x52] { * Integer edge_id; @@ -79,7 +79,7 @@ public: void write_null() { encoder.write_null(); } - void write(const Null &v) { encoder.write_null(); } + void write(const Null &) { encoder.write_null(); } void write(const Bool &prop) { encoder.write_bool(prop.value()); } diff --git a/include/communication/bolt/v1/serialization/record_stream.hpp b/include/communication/bolt/v1/serialization/record_stream.hpp index 8e9cdca5e..e643257cf 100644 --- a/include/communication/bolt/v1/serialization/record_stream.hpp +++ b/include/communication/bolt/v1/serialization/record_stream.hpp @@ -10,9 +10,10 @@ namespace bolt { -// compiled queries have to use this class in order to return results -// query code should not know about bolt protocol - +/** + * compiled queries have to use this class in order to return results + * query code should not know about bolt protocol + */ template <class Socket> class RecordStream { diff --git a/include/communication/gate/init.hpp b/include/communication/gate/init.hpp index a5c4e8129..0ee82ec7f 100644 --- a/include/communication/gate/init.hpp +++ b/include/communication/gate/init.hpp @@ -1,4 +1,6 @@ #pragma once -/* Memgraph Communication protocol +/* Memgraph communication protocol * gate is the first name proposal for the protocol */ + +// TODO diff --git a/include/communication/http/init.hpp b/include/communication/http/init.hpp index 628d42bba..fe3005de7 100644 --- a/include/communication/http/init.hpp +++ b/include/communication/http/init.hpp @@ -1,3 +1,3 @@ #pragma once -/* HTTP & HTTPS implementation */ +/* TODO: HTTP & HTTPS implementations */ diff --git a/include/data_structures/bloom/bloom_filter.hpp b/include/data_structures/bloom/bloom_filter.hpp index 33da0df80..8df2a5e13 100644 --- a/include/data_structures/bloom/bloom_filter.hpp +++ b/include/data_structures/bloom/bloom_filter.hpp @@ -1,67 +1,76 @@ +#pragma once + #include <bitset> #include <iostream> #include <vector> -/* - Implementation of a generic Bloom Filter. - - Read more about bloom filters here: - http://en.wikipedia.org/wiki/Bloom_filter - http://www.jasondavies.com/bloomfilter/ -*/ - -// Type specifies the type of data stored +/** + * Implementation of a generic Bloom Filter. + * Read more about bloom filters here: + * http://en.wikipedia.org/wiki/Bloom_filter + * http://www.jasondavies.com/bloomfilter/ + * + * Type specifies the type of data stored + */ template <class Type, int BucketSize = 8> -class BloomFilter { - private: - using HashFunction = std::function<uint64_t(const Type&)>; - using CompresionFunction = std::function<int(uint64_t)>; +class BloomFilter +{ +private: + using HashFunction = std::function<uint64_t(const Type &)>; + using CompresionFunction = std::function<int(uint64_t)>; - std::bitset<BucketSize> filter_; - std::vector<HashFunction> hashes_; - CompresionFunction compression_; - std::vector<int> buckets; + std::bitset<BucketSize> filter_; + std::vector<HashFunction> hashes_; + CompresionFunction compression_; + std::vector<int> buckets; - int default_compression(uint64_t hash) { return hash % BucketSize; } + int default_compression(uint64_t hash) { return hash % BucketSize; } - void get_buckets(const Type& data) { - for (int i = 0; i < hashes_.size(); i++) - buckets[i] = compression_(hashes_[i](data)); - } - - void print_buckets(std::vector<uint64_t>& buckets) { - for (int i = 0; i < buckets.size(); i++) { - std::cout << buckets[i] << " "; + void get_buckets(const Type &data) + { + for (int i = 0; i < hashes_.size(); i++) + buckets[i] = compression_(hashes_[i](data)); } - std::cout << std::endl; - } - public: - BloomFilter(std::vector<HashFunction> funcs, - CompresionFunction compression = {}) - : hashes_(funcs) { - if (!compression) - compression_ = std::bind(&BloomFilter::default_compression, this, - std::placeholders::_1); - else - compression_ = compression; + void print_buckets(std::vector<uint64_t> &buckets) + { + for (int i = 0; i < buckets.size(); i++) + { + std::cout << buckets[i] << " "; + } + std::cout << std::endl; + } - buckets.resize(hashes_.size()); - } +public: + BloomFilter(std::vector<HashFunction> funcs, + CompresionFunction compression = {}) + : hashes_(funcs) + { + if (!compression) + compression_ = std::bind(&BloomFilter::default_compression, this, + std::placeholders::_1); + else + compression_ = compression; - bool contains(const Type& data) { - get_buckets(data); - bool contains_element = true; + buckets.resize(hashes_.size()); + } - for (int i = 0; i < buckets.size(); i++) - contains_element &= filter_[buckets[i]]; + bool contains(const Type &data) + { + get_buckets(data); + bool contains_element = true; - return contains_element; - } + for (int i = 0; i < buckets.size(); i++) + contains_element &= filter_[buckets[i]]; - void insert(const Type& data) { - get_buckets(data); + return contains_element; + } - for (int i = 0; i < buckets.size(); i++) filter_[buckets[i]] = true; - } + void insert(const Type &data) + { + get_buckets(data); + + for (int i = 0; i < buckets.size(); i++) + filter_[buckets[i]] = true; + } }; diff --git a/include/data_structures/concurrent/concurrent_map.hpp b/include/data_structures/concurrent/concurrent_map.hpp index 8f7fb904c..6874b313b 100644 --- a/include/data_structures/concurrent/concurrent_map.hpp +++ b/include/data_structures/concurrent/concurrent_map.hpp @@ -5,9 +5,12 @@ using std::pair; -// Multi thread safe map based on skiplist. -// K - type of key. -// T - type of data. +/** + * Multi thread safe map based on skiplist. + * + * @tparam K is a type of key. + * @tparam T is a type of data. + */ template <typename K, typename T> class ConcurrentMap { diff --git a/include/data_structures/concurrent/concurrent_multimap.hpp b/include/data_structures/concurrent/concurrent_multimap.hpp index e860438cd..2d822f0bd 100644 --- a/include/data_structures/concurrent/concurrent_multimap.hpp +++ b/include/data_structures/concurrent/concurrent_multimap.hpp @@ -5,9 +5,12 @@ using std::pair; -// Multi thread safe multi map based on skiplist. -// K - type of key. -// T - type of data. +/** + * Multi thread safe multi map based on skiplist. + * + * @tparam K is a type of key. + * @tparam T is a type of data. + */ template <typename K, typename T> class ConcurrentMultiMap { diff --git a/include/data_structures/concurrent/skiplist.hpp b/include/data_structures/concurrent/skiplist.hpp index 03254fa08..49a8a3edd 100644 --- a/include/data_structures/concurrent/skiplist.hpp +++ b/include/data_structures/concurrent/skiplist.hpp @@ -12,7 +12,7 @@ #include "data_structures/concurrent/skiplist_gc.hpp" -/* @brief Concurrent lock-based skiplist with fine grained locking +/** @brief Concurrent lock-based skiplist with fine grained locking * * From Wikipedia: * "A skip list is a data structure that allows fast search within an @@ -97,11 +97,13 @@ template <class T, size_t H = 32, class lock_t = SpinLock> class SkipList : private Lockable<lock_t> { public: - // computes the height for the new node from the interval [1...H] - // with p(k) = (1/2)^k for all k from the interval + /** + * computes the height for the new node from the interval [1...H] + * with p(k) = (1/2)^k for all k from the interval + */ static thread_local FastBinomial<H> rnd; - /* @brief Wrapper class for flags used in the implementation + /** @brief Wrapper class for flags used in the implementation * * MARKED flag is used to logically delete a node. * FULLY_LINKED is used to mark the node as fully inserted, i.e. linked @@ -224,12 +226,14 @@ public: Placeholder<T> data; - // this creates an array of the size zero. we can't put any sensible - // value here since we don't know what size it will be untill the - // node is allocated. we could make it a Node** but then we would - // have two memory allocations, one for node and one for the forward - // list. this way we avoid expensive malloc/free calls and also cache - // thrashing when following a pointer on the heap + /** + * this creates an array of the size zero. we can't put any sensible + * value here since we don't know what size it will be untill the + * node is allocated. we could make it a Node** but then we would + * have two memory allocations, one for node and one for the forward + * list. this way we avoid expensive malloc/free calls and also cache + * thrashing when following a pointer on the heap + */ std::atomic<Node *> tower[0]; }; @@ -441,6 +445,7 @@ public: } private: + // TODO: figure why start is unused static int update_path(SkipList *skiplist, int start, const K &item, Node *preds[], Node *succs[]) { @@ -664,14 +669,18 @@ private: return (node == nullptr) || item < node->value(); } - // Returns first occurence of item if there exists one. + /** + * Returns first occurence of item if there exists one. + */ template <class K> ConstIterator find(const K &item) const { return const_cast<SkipList *>(this)->find_node<ConstIterator, K>(item); } - // Returns first occurence of item if there exists one. + /** + * Returns first occurence of item if there exists one. + */ template <class K> Iterator find(const K &item) { @@ -689,7 +698,9 @@ private: } } - // Returns iterator on searched element or the first larger element. + /** + * Returns iterator on searched element or the first larger element. + */ template <class It, class K> It find_or_larger(const K &item) { @@ -758,8 +769,11 @@ private: return valid; } - // Inserts non unique data into list. - // NOTE: Uses modified logic from insert method. + /** + * Inserts non unique data into list. + * + * NOTE: Uses modified logic from insert method. + */ Iterator insert_non_unique(T &&data, Node *preds[], Node *succs[]) { while (true) { @@ -823,9 +837,12 @@ private: } } - // Insert unique data - // F - type of funct which will create new node if needed. Recieves height - // of node. + /** + * Insert unique data + * + * F - type of funct which will create new node if needed. Recieves height + * of node. + */ std::pair<Iterator, bool> insert(Node *preds[], Node *succs[], T &&data) { while (true) { @@ -857,8 +874,11 @@ private: } } - // Insert unique data - // NOTE: This is almost all duplicate code from insert. + /** + * Insert unique data + * + * NOTE: This is almost all duplicate code from insert. + */ template <class K, class... Args> std::pair<Iterator, bool> emplace(Node *preds[], Node *succs[], K &key, Args &&... args) @@ -893,9 +913,11 @@ private: } } - // Inserts data to specified locked location. + /** + * Inserts data to specified locked location. + */ Iterator insert_here(Node *new_node, Node *preds[], Node *succs[], - int height, guard_t guards[]) + int height, guard_t guards[]) // TODO: querds unused { // Node::create(std::move(data), height) // link the predecessors and successors, e.g. @@ -921,10 +943,12 @@ private: !node->flags.is_marked(); } - // Remove item found with fp with arguments skiplist,preds and succs. - // fp has to fill preds and succs which reflect location of item or return - // -1 as in not found otherwise returns level on which the item was first - // found. + /** + * Removes item found with fp with arguments skiplist, preds and succs. + * fp has to fill preds and succs which reflect location of item or return + * -1 as in not found otherwise returns level on which the item was first + * found. + */ template <class K> bool remove(const K &item, Node *preds[], Node *succs[], int (*fp)(SkipList *, int, const K &, Node *[], Node *[])) @@ -966,7 +990,9 @@ private: } } - // number of elements + /** + * number of elements + */ std::atomic<size_t> count{0}; Node *header; SkiplistGC<Node> gc; diff --git a/src/communication/gate/init.cpp b/src/communication/gate/init.cpp deleted file mode 100644 index 70b786d12..000000000 --- a/src/communication/gate/init.cpp +++ /dev/null @@ -1 +0,0 @@ -// TODO diff --git a/src/communication/http/init.cpp b/src/communication/http/init.cpp deleted file mode 100644 index 70b786d12..000000000 --- a/src/communication/http/init.cpp +++ /dev/null @@ -1 +0,0 @@ -// TODO