diff options
author | marha <marha@users.sourceforge.net> | 2010-02-18 07:22:26 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2010-02-18 07:22:26 +0000 |
commit | 24d6ec0750afd0c393bab09aabe174da824a8c56 (patch) | |
tree | c856ef924b12b5f1a88809208c38438cc874e6a1 /tools/mhmake/src/commandqueue.h | |
parent | 5a30da03ddafd49caf68942f7ddf021bd898ef6d (diff) | |
download | vcxsrv-24d6ec0750afd0c393bab09aabe174da824a8c56.tar.gz vcxsrv-24d6ec0750afd0c393bab09aabe174da824a8c56.tar.bz2 vcxsrv-24d6ec0750afd0c393bab09aabe174da824a8c56.zip |
svn merge --reintegrate ^/branches/mhmake.parallel .
Diffstat (limited to 'tools/mhmake/src/commandqueue.h')
-rw-r--r-- | tools/mhmake/src/commandqueue.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tools/mhmake/src/commandqueue.h b/tools/mhmake/src/commandqueue.h new file mode 100644 index 000000000..54a22e98e --- /dev/null +++ b/tools/mhmake/src/commandqueue.h @@ -0,0 +1,40 @@ +#ifndef __COMMANDQUEUE_H__
+#define __COMMANDQUEUE_H__
+
+#include "fileinfo.h"
+
+class commandqueue
+{
+ struct activeentry
+ {
+ refptr<fileinfo> pTarget;
+ vector<string>::iterator CurrentCommandIt;
+ string Command;
+ md5_context md5ctx;
+ bool IgnoreError;
+ };
+private:
+ queue< refptr<fileinfo> > m_Queue;
+ unsigned m_MaxNrCommandsInParallel;
+ HANDLE *m_pActiveProcesses;
+ activeentry *m_pActiveEntries;
+ unsigned m_NrActiveEntries;
+
+private:
+ void ThrowCommandExecutionError(activeentry *pActiveEntry);
+ void RemoveActiveEntry(unsigned Entry);
+ bool StartExecuteCommands(const refptr<fileinfo> &pTarget);
+ bool StartExecuteNextCommand(activeentry *pActiveEntry, HANDLE *pActiveProcess);
+ void TargetBuildFinished(activeentry *pActiveEntry);
+
+public:
+ commandqueue();
+ ~commandqueue();
+
+ bool QueueTarget(const refptr<fileinfo> &pTarget); // Returns true if target has been queued, false when commands are executed upon return
+ mh_time_t WaitForTarget(const refptr<fileinfo> &pTarget);
+ void SetNrParallelBuilds(unsigned NrParallelBuilds);
+};
+
+
+#endif
|