void watchman_store_free(watchman_store *store) { DEBUG(libwatchman.store.free, "watchman_store_free %tx\n", store); for (uint32_t i = 0; i < store->ts_length; i++) watchman_class_destroy(store->ts_classes + i); watchman_free(store->ts_lifetimes); watchman_free(store); }
/** * RubyWatchman.dump(serializable) * * Converts the Ruby object, `serializable`, into a binary string in the * Watchman binary protocol format. * * Examples of serializable objects include arrays, hashes, strings, numbers * (integers, floats), booleans, and nil. */ VALUE RubyWatchman_dump(VALUE self, VALUE serializable) { watchman_t *w = watchman_init(); watchman_dump(w, serializable); // update header with final length information uint64_t *len = (uint64_t *)(w->data + sizeof(WATCHMAN_HEADER) - sizeof(uint64_t) - 1); *len = w->len - sizeof(WATCHMAN_HEADER) + 1; // prepare final return value VALUE serialized = rb_str_buf_new(w->len); rb_str_buf_cat(serialized, (const char*)w->data, w->len); watchman_free(w); return serialized; }