SpikeStream Library  0.2
NetworkDaoThread.h
Go to the documentation of this file.
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
 All Classes Files Functions Variables Typedefs Defines