diff options
Diffstat (limited to 'src/fluent-bit/plugins/filter_throttle_size/size_window.h')
-rw-r--r-- | src/fluent-bit/plugins/filter_throttle_size/size_window.h | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/src/fluent-bit/plugins/filter_throttle_size/size_window.h b/src/fluent-bit/plugins/filter_throttle_size/size_window.h deleted file mode 100644 index be661d6ec..000000000 --- a/src/fluent-bit/plugins/filter_throttle_size/size_window.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ - -/* Fluent Bit - * ========== - * Copyright (C) 2015-2022 The Fluent Bit Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef FLB_SIZE_WINDOW_H -#define FLB_SIZE_WINDOW_H - -#include <fluent-bit/flb_hash_table.h> - -#define FLB_SIZE_WINDOW_HASH_MAX_ENTRIES 100000 - -struct throttle_size_pane -{ - long timestamp; - unsigned long size; -}; - -struct throttle_size_window -{ - char *name; - unsigned size; - unsigned long total; - long timestamp; - int head; - int tail; - struct throttle_size_pane *table; -}; - -struct throttle_size_table -{ - struct flb_hash_table *windows; - void *lock; -}; - -struct throttle_size_table *create_throttle_size_table(); - -struct throttle_size_window *size_window_create(const char *name, - unsigned name_length, - unsigned int size); - -/*This function adds new pane on top of the pane stack by overwriting the oldes one - which @timestamp and load size of 0 bytes. The oldes pane's amount of load size - is subtracted of the total amount.*/ -inline static void add_new_pane(struct throttle_size_window *stw, - long timestamp) -{ - unsigned long tail_size = 0; - tail_size = stw->table[stw->tail].size; - if (stw->size - 1 == stw->head) { - /* the head will exceed the end of the inner array end must be put at the begging. */ - stw->head = -1; - } - stw->head += 1; - stw->table[stw->head].timestamp = timestamp; - stw->table[stw->head].size = 0; - stw->total -= tail_size; - if (stw->size - 1 == stw->tail) { - /* the tail will exceed the end of the inner array end must be put at the begging. */ - stw->tail = -1; - } - stw->tail += 1; -} - -/*This function adds @load to the latest pane which is on top of the pane stack. - @load is added to the total amount of the size throttling window. - If @load is not 0 then the size throttling window's timestamp will be updated to the - one which is on top of the pane stack(latest)*/ -inline static void add_load(struct throttle_size_window *stw, - unsigned long load) -{ - stw->table[stw->head].size += load; - stw->total += load; - if (load) { - stw->timestamp = stw->table[stw->head].timestamp; - } -} - -inline static void free_stw_content(struct throttle_size_window *stw) -{ - flb_free(stw->name); - flb_free(stw->table); -} - -inline static void free_stw(struct throttle_size_window *stw) -{ - free_stw_content(stw); - flb_free(stw); -} - -inline static struct throttle_size_window *find_throttle_size_window(struct - throttle_size_table - *table, - char - *name, - unsigned - name_length) -{ - char *window = NULL; - size_t out_size; - if (flb_hash_table_get(table->windows, name, name_length, - (const char **)&window, &out_size) >= 0) { - if (out_size < sizeof(struct throttle_size_window)) { - flb_error("Malformed data in size window hashtable"); - return NULL; - } - return (struct throttle_size_window *) window; - } - return NULL; -} - -inline static void add_throttle_size_window(struct throttle_size_table - *table, - struct throttle_size_window - *window) -{ - flb_hash_table_add(table->windows, window->name, strlen(window->name), - (char *) window, sizeof(struct throttle_size_window)); -} - -void destroy_throttle_size_table(struct throttle_size_table *table); - -void lock_throttle_size_table(struct throttle_size_table *ht); -void unlock_throttle_size_table(struct throttle_size_table *ht); - -#endif |