SpikeStream Library
0.2
|
00001 #ifndef NETWORKDAOTHREAD_H 00002 #define NETWORKDAOTHREAD_H 00003 00004 //SpikeStream includes 00005 #include "NetworkDao.h" 00006 #include "DBInfo.h" 00007 #include "ConnectionGroup.h" 00008 #include "NeuronGroup.h" 00009 using namespace spikestream; 00010 00011 //Qt includes 00012 #include <QThread> 00013 00014 00015 namespace spikestream { 00016 00019 class NetworkDaoThread : public QThread, public NetworkDao { 00020 Q_OBJECT 00021 00022 public: 00023 NetworkDaoThread(const DBInfo& dbInfo, const QString& name = "Unnamed"); 00024 ~NetworkDaoThread(); 00025 void clearError(); 00026 int getNumberOfCompletedSteps() { return numberOfCompletedSteps; } 00027 int getTotalNumberOfSteps() { return totalNumberOfSteps; } 00028 bool isError() { return error; } 00029 QString getErrorMessage() { return errorMessage; } 00030 QString getProgressMessage() { return progressMessage; } 00031 void prepareAddConnectionGroup(unsigned int networkID, ConnectionGroup* connGrp); 00032 void prepareAddConnectionGroups(unsigned int networkID, QList<ConnectionGroup*>& connGrpList); 00033 void prepareAddNeuronGroup(unsigned int networkID, NeuronGroup* neurGrp); 00034 void prepareAddNeuronGroups(unsigned int networkID, QList<NeuronGroup*>& neurGrpList); 00035 void prepareDeleteConnectionGroups(unsigned int networkID, QList<unsigned int>& conGrpList); 00036 void prepareDeleteNeuronGroups(unsigned int networkID, QList<unsigned int>& neurGrpList); 00037 void prepareLoadConnections(const QList<ConnectionGroup*>& connGrpList); 00038 void prepareLoadConnections(ConnectionGroup* connGrp); 00039 void prepareLoadNeurons(const QList<NeuronGroup*>& neurGrpList); 00040 void prepareLoadNeurons(NeuronGroup* neurGrp); 00041 void run(); 00042 void startDeleteNetwork(unsigned networkID); 00043 void startSaveNetwork(unsigned networkID, QList<NeuronGroup*> newNeuronGroups, QList<ConnectionGroup*> newConnectionGroups, QList<unsigned> deleteNeuronGroupIDs, QList<unsigned> deleteConnectionGroupIDs, QList<ConnectionGroup*> volatileConnectionGroups); 00044 void startSaveTempWeights(QList<ConnectionGroup*>& connectionGroupList); 00045 void stop(); 00046 00047 private: 00048 //======================== VARIABLES ========================= 00051 QList<ConnectionGroup*> connectionGroupList; 00052 00054 QList<unsigned int> connectionGroupIDList; 00055 00057 QList<NeuronGroup*> neuronGroupList; 00058 00060 QList<unsigned int> neuronGroupIDList; 00061 00063 QList<ConnectionGroup*> volatileConnectionGroupList; 00064 00066 unsigned int networkID; 00067 00069 unsigned int currentTask; 00070 00072 bool stopThread; 00073 00076 bool error; 00077 00079 QString errorMessage; 00080 00082 QString progressMessage; 00083 00085 int totalNumberOfSteps; 00086 00088 int numberOfCompletedSteps; 00089 00091 int numConBuffers; 00092 00094 int numNeurBuffers; 00095 00096 const static unsigned int NO_TASK_DEFINED = 1; 00097 const static unsigned int ADD_CONNECTION_GROUPS_TASK = 2; 00098 const static unsigned int ADD_NEURON_GROUPS_TASK = 3; 00099 const static unsigned int DELETE_CONNECTION_GROUPS_TASK = 4; 00100 const static unsigned int DELETE_NETWORK_TASK = 5; 00101 const static unsigned int DELETE_NEURON_GROUPS_TASK = 6; 00102 const static unsigned int LOAD_NEURONS_TASK = 7; 00103 const static unsigned int LOAD_CONNECTIONS_TASK = 8; 00104 const static unsigned int SAVE_NETWORK_TASK = 9; 00105 const static unsigned int SAVE_TEMP_WEIGHTS_TASK = 10; 00106 00107 00108 //======================== METHODS =========================== 00109 void addNeuronGroups(); 00110 void addConnectionGroups(); 00111 void deleteConnectionGroups(); 00112 void deleteNetwork(); 00113 void deleteNeuronGroups(); 00114 void loadConnections(); 00115 void loadNeurons(); 00116 void saveNetwork(); 00117 void saveTempWeights(); 00118 void setError(const QString& msg); 00119 }; 00120 00121 } 00122 00123 #endif//NETWORKDAOTHREAD_H