X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Floadbalance.h;fp=cinelerra-5.0%2Fcinelerra%2Floadbalance.h;h=0000000000000000000000000000000000000000;hb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;hp=b92d138b204f6aad93d3e1c280171433b0be2064;hpb=52fcc46226f9df46f9ce9d0566dc568455a7db0b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/loadbalance.h b/cinelerra-5.0/cinelerra/loadbalance.h deleted file mode 100644 index b92d138b..00000000 --- a/cinelerra-5.0/cinelerra/loadbalance.h +++ /dev/null @@ -1,130 +0,0 @@ - -/* - * CINELERRA - * Copyright (C) 2008 Adam Williams - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#ifndef LOADBALANCE_H -#define LOADBALANCE_H - -#include "condition.inc" -#include "mutex.inc" -#include "thread.h" - - - - -// Load balancing utils -// There is no guarantee that all the load clients will be run in a -// processing operation. - - -class LoadServer; - - - -class LoadPackage -{ -public: - LoadPackage(); - virtual ~LoadPackage(); - - Condition *completion_lock; -}; - - -class LoadClient : public Thread -{ -public: - LoadClient(LoadServer *server); - LoadClient(); - virtual ~LoadClient(); - -// Called when run as distributed client - void run(); -// Called when run as a single_client - void run_single(); - virtual void process_package(LoadPackage *package); - int get_package_number(); - LoadServer* get_server(); - - int done; - int package_number; - Condition *input_lock; - Condition *completion_lock; - LoadServer *server; -}; - - - - -class LoadServer -{ -public: - LoadServer(int total_clients, int total_packages); - virtual ~LoadServer(); - - friend class LoadClient; - -// Called first in process_packages. Should also initialize clients. - virtual void init_packages() {}; - virtual LoadClient* new_client() { return 0; }; - virtual LoadPackage* new_package() { return 0; }; - -// User calls this to do an iteration with the distributed clients - void process_packages(); - -// Use this to do an iteration with one client, in the current thread. -// The single client is created specifically for this call and deleted in -// delete_clients. This simplifies the porting to OpenGL. -// total_packages must be > 0. - void process_single(); - -// These values are computed from the value of is_single. - int get_total_packages(); - int get_total_clients(); - LoadPackage* get_package(int number); - LoadClient* get_client(int number); - void set_package_count(int total_packages); - - - - void delete_clients(); - void create_clients(); - void delete_packages(); - void create_packages(); - - - - -private: - int current_package; - LoadPackage **packages; - int total_packages; - LoadClient **clients; - LoadClient *single_client; - int total_clients; - int is_single; - Mutex *client_lock; -}; - - - -#endif - -