Muster SDK  8.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
MTemplate.h
Go to the documentation of this file.
1 /*****************************************************************************
2 **
3 ** Header file for Virtual Vertex Template class
4 **
5 ** Name : MTemplate.h
6 ** Author : Leonardo Bernardini
7 ** Version : Alpha 0.1, Sun Aug 15th 2006
8 **
9 ** Copyright 2000-2014, Virtual Vertex
10 ** All Rights Reserved.
11 **
12 ** This file contains UNPUBLISHED PROPRIETARY SOURCE CODE.
13 ** The contents of this file may not be disclosed to third parties, copied
14 ** or duplicated in any form, in whole or in part, without the prior written
15 ** permission of the author.
16 **
17 *****************************************************************************/
18 #ifndef MTEMPLATE_H
19 #define MTEMPLATE_H
20 
21 #ifdef WIN32
22 // Windows definitions
23 #ifdef MTEMPLATE_EXPORTS
24 #define MTEMPLATE_API __declspec(dllexport)
25 #else
26 #define MTEMPLATE_API __declspec(dllimport)
27 #endif
28 #else
29 
30 #ifndef MTEMPLATE_EXPORTS
31 #ifdef LINUX
32 #define MTEMPLATE_API
33 #else
34 #define MTEMPLATE_API
35 #endif
36 #else
37 #define MTEMPLATE_API
38 #endif
39 #endif
40 
41 // Disable STL Export warning
42 #if defined(_WIN32)
43 #pragma warning(disable: 4251)
44 #endif // _WIN32
45 
46 #include <string>
47 
48 #include "MClientLib/MProcess.h"
49 #include "MClientLib/MChunk.h"
50 #include "MClientLib/MJob.h"
51 #include "MClientLib/MStringRef.h"
52 
53 namespace MTemplateEngine {
54 
61  };
62 
66 
67  public:
71  kTemplateErrorDefault = 0x01,
72  kTemplateErrorPauseJob = 0x02,
73  kTemplateErrorPauseClient = 0x04,
74  kTemplateErrorAddTemplateToExclusion = 0x08,
75  kTemplateErrorAddJobToExclusion = 0x10,
76  kTemplateErrorRequeueChunk = 0x20,
77  kTemplateErrorAbortRender = 0x40
78  };
79 
86  kTemplateErrorTypeWarning
87  };
88 
90  MTemplateError(int errorCode, std::string errorString, int _errorType);
91  ~MTemplateError();
92 
93  int getErrorCode();
94  void setErrorCode(int _errorCode);
95  std::string getErrorString();
96  void setErrorString(const std::string& _errorString);
97  void addErrorAction(int _errorAction);
98  void setErrorActionToDefault();
99  int getErrorAction();
100  void setErrorType(int _errorType);
101  int getErrorType();
102  private:
103  int errorCode;
104  std::string errorString;
105  int errorAction;
106  int errorType;
107  };
108 
112 
113  public:
119  kTemplateItemFieldsActivationDisable
120  };
121 
123  MTemplateItemEvent(const std::string& field, const std::string& value, int activationEvent);
125  void setActivationEvent(int _activationEvent);
126  void setValue(const std::string& _value);
127  void setField(const std::string& _field);
128  int getActivationEvent();
129  std::string getValue();
130  std::string getField();
131  void encodeTree(void* pt, std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
132 
133  private:
134  std::string value;
135  std::string field;
136  int activationEvent;
137  };
138 
142 
143 public:
144 
147  void clear();
148  void addEvent(const std::string& _field, const std::string& _value, int _activationEvent);
149  std::map<std::string,MTemplateItemEvent>* getEvents();
150 
151 private:
152  std::map<std::string,MTemplateItemEvent> map;
153 };
154 
158 
159  public:
160 
161  friend class MTemplate;
162  friend class MTemplateItemHolder;
163  friend class MTemplatePlatform;
164 
177  kTemplateItemYesNo
178  };
179 
180  MTemplateItem();
181  MTemplateItem(const std::string& _name, const std::string& _description,const std::string& _extendedDescription,
182  const std::string& defaultValue, bool _isActivable,bool _applySubstitution, bool _isMandatory);
183  virtual ~MTemplateItem();
184 
185  std::string getName();
186  std::string getDescription();
187  std::string getExtendedDescription();
188  std::string getDefaultValue();
189  bool getDefaultActivatorValue();
190  bool getIsActivable();
191  bool getApplySubstitution();
192  bool getIsMandatory();
193  int getType();
194 
195  void setName(const std::string& _name);
196  void setDescription(const std::string& _description);
197  void setExtendedDescription(const std::string& _extendedDescription);
198  void setIsActivable(bool _isActivable);
199  void setApplySubstitution(bool _applySubstitution);
200  void setIsMandatory(bool _isMandatory);
201  void setType(int _type);
202  void setDefaultValue(const std::string& _defaultValue);
203  void setDefaultActivatorValue(bool _defaultValue);
204 
205  MTemplateItem* duplicateItem();
206  static void deallocateItemList(std::vector<MTemplateItem*>* list);
207  protected:
208  int type;
209  private:
210  std::string defaultValue;
211  std::string name;
212  std::string description;
213  std::string extendedDescription;
214  bool isActivable;
215  bool applySubstitution;
216  bool isMandatory;
217  bool defaultActivatorValue;
218  protected:
219  virtual void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
220 
221  };
222 
226  public:
228  MTemplateItemFile(const std::string& _name, const std::string& _description, const std::string& _extendedDescription,
229  const std::string& _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory, const std::string& fileFilters);
230  virtual ~MTemplateItemFile();
231 
232  void setFileFilters(const std::string& filters);
233  std::string getFileFilters();
234 
235  void setIsFileSaveDialog(bool _isFileDialog);
236  bool getIsFileSaveDialog();
237 
238  protected:
239  void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
240  private:
241  std::string fileFilters;
242  bool isFileDialog;
243  };
244 
248  public:
250  MTemplateItemFolder(const std::string& _name, const std::string& _description, const std::string& _extendedDescription,
251  const std::string& _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory);
252  virtual ~MTemplateItemFolder();
253  };
254 
258  public:
260  MTemplateItemString(const std::string& _name, const std::string& _description, const std::string& _extendedDescription,
261  const std::string& _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory);
262  virtual ~MTemplateItemString();
263  };
264 
268  public:
270  MTemplateItemDouble(const std::string& _name, const std::string& _description, const std::string& _extendedDescription,
271  double _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory);
272  virtual ~MTemplateItemDouble();
273  };
274 
278  public:
280  MTemplateItemInteger(const std::string& _name, const std::string& _description, const std::string& _extendedDescription,
281  int _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory);
282  virtual ~MTemplateItemInteger();
283  };
284 
288  public:
290  MTemplateItemCheck(const std::string& _name, const std::string& _description,const std::string& _extendedDescription,
291  bool _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory);
292  virtual ~MTemplateItemCheck();
293  };
294 
298  public:
300  MTemplateItemYesNo(const std::string& _name, const std::string& _description, const std::string& _extendedDescription,
301  bool _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory);
302  virtual ~MTemplateItemYesNo();
303  };
304 
308  public:
310  MTemplateItemComboItem(const std::string& _key, const std::string& _value) { key = _key; value = _value; }
312  void setKey(const std::string& _key) { key = _key; }
313  void setValue(const std::string& _value) { value = _value; }
314  std::string getKey() { return key; }
315  std::string getValue() { return value; }
316  private:
317  std::string key;
318  std::string value;
319  };
320 
324  public:
326  MTemplateItemCombo(const std::string& _name, const std::string& _description, const std::string& _extendedDescription,
327  const std::string& _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory);
328  virtual ~MTemplateItemCombo();
329  void addItem(const std::string& key,const std::string& value);
330  void clearItems();
331  std::vector<MTemplateItemComboItem>* getItems();
332  protected:
333  void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
334  private:
335  std::vector<MTemplateItemComboItem> items;
336  };
337 
341  public:
343  MTemplateItemMultichoice(const std::string& _name, const std::string& _description,const std::string& _extendedDescription,
344  const std::string& _defaultValue,bool _isActivable,bool _applySubstitution, bool _isMandatory);
345  virtual ~MTemplateItemMultichoice();
346  };
347 
351  {
352  friend class MTemplate;
353 
354  public:
358 
359  bool getPlatformEnabled();
360  bool getEnableErrorCheck();
361  bool getEnabledByDefault();
362  int getFramesFloating();
363  int getDetectionLogic();
364  std::string getDetectionLogicProcessName();
365  std::string getDetectionLogicChildProcessName();
366  bool getHideProcessWindow();
367 
368  void setPlatformEnabled(bool _platformEnabled);
369  void setEnableErrorCheck(bool _enableErrorCheck);
370  void setEnabledByDefault(bool _enabledByDefault);
371  void setFramesFloating(int _framesFloating);
372  void setDetectionLogic(int _detectionLogic);
373  void setDetectionLogicProcessName(const std::string& _detectionLogicProcessName);
374  void setDetectionLogicChildProcessName(const std::string& _detectionLogicChildProcessName);
375  void setHideProcessWindow(bool _hideProcessWindow);
376 
377  void clearClientConfigurationItems();
378  void addClientConfigurationItem(MTemplateItem* item);
379  std::vector<MTemplateItem*>* getClientConfigurationItems();
380 
381  private:
382  bool platformEnabled;
383  bool enableErrorCheck;
384  bool enabledByDefault;
385  bool hideProcessWindow;
386  int framesFloating;
387  int detectionLogic;
388  std::string detectionLogicProcessName;
389  std::string detectionLogicChildProcessName;
390  std::vector<MTemplateItem*> clientAttributes;
391  void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
392  MTemplatePlatform& operator= (const MTemplatePlatform &src);
393  void copyFrom(const MTemplatePlatform& src);
394 
395  };
396 
400 
401  {
402  friend class MTemplate;
403 
404  public:
407  void setGroupName(const std::string& _groupName);
408  std::string getGroupName();
409  std::vector<MTemplateItem*>* getVector();
410  void addItem(MTemplateItem* item);
411  void clearItems();
412  MTemplateItemHolder* duplicateItem();
413  private:
414  std::string groupName;
415  std::vector<MTemplateItem*> vec;
416  void encodeTree(void* pt, std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
417 
418  };
419 
423 
424  {
425  friend class MTemplate;
426 
427  public:
430  bool getEnable();
431  bool getPauseJob();
432  bool getPauseNode();
433  bool getAddTemplateToExclusion();
434  bool getAddJobToExclusion();
435  bool getRequeueChunk();
436 
437  void setEnable(bool _enable);
438  void setPauseJob(bool _pauseJob);
439  void setPauseNode(bool _pauseNode);
440  void setAddTemplateToExclusion(bool _addTemplateToExclusion);
441  void setAddJobToExclusion(bool _addJobToExclusion);
442  void setRequeueChunk(bool _requeueChunk);
443  private:
444  bool enable;
445  bool pauseJob;
446  bool pauseNode;
447  bool addTemplateToExclusion;
448  bool addJobToExclusion;
449  bool requeueChunk;
450  void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
451 
452  };
453 
457 
458  {
459  friend class MTemplate;
460 
461  public:
464  std::string getAction();
465  bool getCheckReturnCode();
466  int getReturnCode();
467  int getTimeout();
468 
469  void setAction(const std::string& _action);
470  void setCheckReturnCode(bool _checkReturnCode);
471  void setReturnCode(int _returnCode);
472  void setTimeout(int _timeout);
473 
474  private:
475  std::string action;
476  bool checkReturnCode;
477  int returnCode;
478  int timeout;
479  void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
480 
481  };
482 
486  {
487  friend class MTemplate;
488 
489  public:
492  bool getEnableFrameCheck();
493  void setEnableFrameCheck(bool _enableFrameCheck);
494  bool getEnableMovieAssembler();
495  void setEnableMovieAssembler(bool _enableMovieAssembler);
496  bool getCanProvideFramesMask();
497  void setCanProvideFramesMask(bool _canProvideFramesMask);
498 
499  private:
500  bool enableFrameCheck;
501  bool canProvideFramesMask;
502  bool enableMovieAssembler;
503  void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
504 
505  };
506 
510  {
511  public:
514  void setDescription(const std::string& _description);
515  void setValue(const std::string& _value);
516  std::string getDescription();
517  std::string getValue();
518  private:
519  std::string fileFormatDescription;
520  std::string fileFormatValue;
521  };
522 
526  public:
527  int getSliceFrameResolutionX();
528  int getSliceFrameResolutionY();
529  int getSliceSamplesOriginX();
530  int getSliceSamplesOriginY();
531  int getSliceWidth();
532  int getSliceHeight();
533  int getFinalPositionX();
534  int getFinalPositionY();
535 
536  void setSliceFrameResolutionX(int _sliceFrameResolutionX);
537  void setSliceFrameResolutionY(int _sliceFrameResolutionY);
538  void setSliceSamplesOriginX(int _sliceOriginX);
539  void setSliceSamplesOriginY(int _sliceOriginY);
540  void setSliceWidth(int _sliceWidth);
541  void setSliceHeight(int _sliceHeight);
542  void setFinalPositionX(int _finalPositionX);
543  void setFinalPositionY(int _finalPositionY);
544 
545  private:
546  int sliceFrameResolutionX;
547  int sliceFrameResolutionY;
548  int sliceOriginX;
549  int sliceOriginY;
550  int sliceWidth;
551  int sliceHeight;
552  int finalPositionX;
553  int finalPositionY;
554  };
555 
559 
560  {
561  friend class MTemplate;
562 
563  public:
564 
567  bool getSkipAssembler();
568  void setSkipAssembler(bool _skipAssembler);
569  void addInputFileFormat(const std::string& _fileFormatDescription, const std::string& _fileFormatValue);
570  void clearInputFileFormats();
571  void addOutputFileFormat(const std::string& _fileFormatDescription, const std::string& _fileFormatValue);
572  void clearOutputFileFormats();
573  std::vector<MTemplateImageSlicingFileFormats>* getInputFileFormats();
574  std::vector<MTemplateImageSlicingFileFormats>* getOutputFileFormats();
575 
576 
577  private:
578  bool skipAssembler;
579  std::vector<MTemplateImageSlicingFileFormats> inputFileFormats;
580  std::vector<MTemplateImageSlicingFileFormats> outputFileFormats;
581 
582  void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
583 
584  };
585 
590  {
591  friend class MManager;
592  public:
593  MTemplate();
594  virtual ~MTemplate();
595  void Retain();
596  void Release();
597  void Lock();
598  void Unlock();
599 
600  bool isPythonTemplate();
601 
605 
608 
614  bool getEnableLogWarningsOverrides();
615  bool getEnableLogErrorsOverrides();
616  bool getEnableExitCodeWarningsOverrides();
617  bool getEnableExitCodeErrorsOverrides();
618  bool getEnableProcessFailureErrorsOverrides();
619  void setEnableLogWarningsOverrides(bool _enableLogWarningsOverrides);
620  void setEnableLogErrorsOverrides(bool _enableLogErrorsOverrides);
621  void setEnableExitCodeWarningsOverrides(bool _enableExitCodeWarningsOverrides);
622  void setEnableExitCodeErrorsOverrides(bool _enableExitCodeErrorsOverrides);
623  void setEnableProcessFailureErrorsOverrides(bool _enableProcessFailureErrorsOverrides);
624 
629  bool getEnablePreChunkActionsOverrides();
630  bool getEnablePostChunkActionsOverrides();
631  bool getEnablePreJobActionsOverrides();
632  bool getEnablePostJobActionsOverrides();
633  void setEnablePreChunkActionsOverrides(bool _enablePreChunkActionsOverrides);
634  void setEnablePostChunkActionsOverrides(bool _enablePostChunkActionsOverrides);
635  void setEnablePreJobActionsOverrides(bool _enablePreJobActionsOverrides);
636  void setEnablePostJobActionsOverrides(bool _enablePostJobActionsOverrides);
637 
638  std::string getContent();
639  std::string getName();
640  std::string getDescription();
641  int getID();
642  std::string getFileName();
643  std::string getMd5Hash();
644  int getTemplateLogic();
645  int getDefaultPriority();
646  std::string getDefaultPools();
647  std::string getDefaultExcludedPools();
648  int getMaximumLicenses();
649  std::string getLicensesGroup();
650  int getDelay();
651  std::string getDelayGroup();
652  bool getEnableAdditionalFlagsField();
653  bool getEnableChunksTimeoutOverride();
654  int getChunksTimeout();
655 
656  void setName(const std::string& _name);
657  void setDescription(const std::string& _description);
658  void setID(int _id);
659  void setFilename(const std::string& _filename);
660  void setMd5Hash(const std::string& _md5Hash);
661  void setTemplateLogic(int _templateLogic);
662  void setDefaultPriority(int _defaultPriority);
663  void setDefaultPools(const std::string& _defaultPools);
664  void setDefaultExcludedPools(const std::string& _defaultExcludedPools);
665  void setMaximumLicenses(int _maximumLicenses);
666  void setLicensesGroup(const std::string& _licensesGroup);
667  void setDelay(int _delay);
668  void setDelayGroup(const std::string& _delayGroup);
669  void setEnableAdditionalFlagsField(bool _enableAdditionalFlagsField);
670 
671  void setEnableChunksTimeoutOverride(bool _enableChunksTimeoutOverride);
672  void setChunksTimeout(int _chunksTimeout);
673 
674  MTemplatePlatform* getActivePlatform();
675 
676  void clearSubmissionItems();
677  void addSubmissionItem(MTemplateItem* item);
678  std::vector<MTemplateItem*>* getSubmissionItems();
679 
680  void clearSubmissionAdditionalItems();
681  void addSubmissionAdditionalItem(const char* groupName,MTemplateItem* item);
682  std::vector<MTemplateItemHolder*>* getSubmissionAdditionalItems();
683 
684  void clearMappings();
685  void addMapping(const std::string& templateValue, const std::string& builtinValue);
686  std::map<std::string,std::string>* getMappings();
687 
688  virtual void onFieldChanged(const std::string& fieldName, const std::string& fieldValue, MTemplateItemsFields& fieldsToChange);
689  virtual std::string onBuildCommandLine(int platform, MClientLib::MJob* job, MClientLib::MChunk* chunk,std::map<std::string,std::string>& clientTemplatePreferences, int instanceNum);
690  virtual std::string onBuildAdditionalParameters(MClientLib::MPropertiesMap& attributes);
691  virtual MTemplateError onGetApplicationPath(MClientLib::MJob* job,std::map<std::string,std::string>& clientTemplatePreferences, MClientLib::MStringRef& pathOut );
692  virtual MTemplateError onGetApplicationStartingFolder(MClientLib::MJob* job,std::map<std::string,std::string>& clientTemplatePreferences, MClientLib::MStringRef& pathOut);
693  virtual MClientLib::MEnvironment onBuildEnvironment(MClientLib::MJob* job, MClientLib::MChunk* chunk,std::map<std::string,std::string>& clientTemplatePreferences, MClientLib::MEnvironment& existingEnvironment);
694  virtual bool onCheckForSubframeAdvancingString(const char* line);
695  virtual bool onCheckForFramesPrefixString(const char* line, MClientLib::MStringRef& prefixOut);
696  virtual bool onCheckForFramesMask(const char* line, MClientLib::MStringRef& maskOut);
697  virtual bool onCheckForSubframeProgress(const char* line, MClientLib::MStringRef& progressOut);
698  virtual MTemplateError onCheckLogLine(MClientLib::MJob* job, MClientLib::MChunk* chunk,std::map<std::string,std::string>& clientTemplatePreferences, const char* line);
699  virtual MTemplateError onCheckLog(MClientLib::MJob* job, MClientLib::MChunk* chunk,std::map<std::string,std::string>& clientTemplatePreferences, const char* log);
700  virtual MTemplateError onCheckExitCode(MClientLib::MJob* job, MClientLib::MChunk* chunk,std::map<std::string,std::string>& clientTemplatePreferences, int exitCode);
701  virtual int onApplicationFinder(MClientLib::MStringRef& moduleRegExp, MClientLib::MStringRef& moduleTag);
702  virtual bool onFindApplication(MClientLib::MStringRef& basePath,std::map<std::string,std::string>& clientTemplatePreferences);
703  virtual bool onModuleFound(MClientLib::MStringRef& moduleExec,MClientLib::MStringRef& modulePath,std::map<std::string,std::string>& clientTemplatePreferences);
704  virtual kTemplateFunctionBehaviour onDetectRunningProcess(MPid mainProcess, std::vector <MClientLib::MProcessSnapshot*> hostProcesses, std::map<std::string,std::string>& clientTemplatePreferences,MPid& runningProcessPid);
705  virtual kTemplateFunctionBehaviour onStartProcess(MClientLib::MJob* job, MClientLib::MChunk* chunk, MClientLib::MEnvironment* env, std::map<std::string,std::string>& clientTemplatePreferences, int instanceNum, MPid& runningProcessPid);
706  virtual kTemplateFunctionBehaviour onCollectProcessOutput(MPid mainProcess,MPid runningProcessPid,int instanceNum,MClientLib::MStringRef& output);
707  virtual kTemplateFunctionBehaviour onTerminateProcess(MClientLib::MJob* job,MPid process, int instanceNum);
708  virtual kTemplateFunctionBehaviour onChangeProcessPriority(MClientLib::MJob* job,MPid process,int priority, int instanceNum);
709  virtual kTemplateFunctionBehaviour onCheckProcessTermination(MClientLib::MJob* job,MPid process, int instanceNum);
710  virtual kTemplateFunctionBehaviour onInstanceOverrideImpersonationUser(MClientLib::MJob* job, MClientLib::MChunk* chunk,std::map<std::string,std::string>& clientTemplatePreferences,MClientLib::MStringRef& usernameOut,MClientLib::MStringRef& passwordOut);
711  virtual kTemplateFunctionBehaviour onDispatcherOverrideImpersonationUser(MClientLib::MJob* job, MClientLib::MChunk* chunk,MClientLib::MStringRef& usernameOut,MClientLib::MStringRef& passwordOut);
712 
713  // Virtual functions called on the global template too (id 0)
714 
715  virtual bool onValidateJobSubmission(MClientLib::MJob* job, MClientLib::MStringRef& err); // Fired from the template manager->console, clientlib ,and on the dispatcher when submitting from the web
716 
717  // Fired from the Dispatcher from the networking threads, be as fast as possible
718  virtual void onDeleteJob(MClientLib::MJob* job);
719  virtual void onSubmitJob(MClientLib::MJob* job);
720  virtual void onReinitJob(MClientLib::MJob* job);
721  virtual void onEditJob(MClientLib::MJob* job);
722  virtual void onJobPropertiesChanged(MClientLib::MJob* job);
723 
724  // Fired from the Dispatcher on a different thread, take your time
725  virtual MTemplateError onJobStart(MClientLib::MJob* job);
726  virtual MTemplateError onJobEnd(MClientLib::MJob* job);
727 
728  // Fired from the client on a shared thread, take your time but this will prevent network flow in multiple instances
729  virtual MTemplateError onChunkStart(MClientLib::MJob* job, MClientLib::MChunk* chunk, std::map<std::string,std::string>& clientTemplatePreferences,int instanceId);
730  virtual MTemplateError onChunkEnd(MClientLib::MJob* job, MClientLib::MChunk* chunk,std::map<std::string,std::string>& clientTemplatePreferences, int instanceId);
731 
732  virtual std::string onGetSlicesInputFilename(MClientLib::MJob* job, MClientLib::MChunk* chunk);
733  virtual std::string onGetSlicesOutputFilename(MClientLib::MJob* job);
734  virtual void onGetSliceBoundaries(MClientLib::MJob* job,MClientLib::MChunk* chunk,MTemplateSliceBoundaries* boundaries );
735 
736  void encodeTree(void* pt,std::string (*encodeFunc)(const std::string &),int encoding,void* fields,std::vector<std::string>* filters);
737  bool compareWebFilters(std::vector<std::string>* filters);
738  bool checkWebFilter(const std::string& field, const std::string& value) ;
739 
740  private:
741  int retainsCount;
742  void* pyObject;
743  void* _mutex;
744  std::string content;
745  bool pythonTemplate;
746 
747  std::string filename;
748  std::string md5hash;
749  std::string name;
750  std::string description;
751  int uid;
752  int templateLogic;
753  int defaultPriority;
754  std::string defaultPools;
755  std::string defaultExcludedPools;
756  int maximumLicenses;
757  std::string licensesGroup;
758  int delay;
759  std::string delayGroup;
760  bool enableAdditionalFlagsField;
761  bool _canProvideFramesMask;
762  bool enableChunksTimeoutOverride;
763  int chunksTimeout;
764 
765  bool enableLogWarningsOverrides;
766  bool enableLogErrorsOverrides;
767  bool enableExitCodeWarningsOverrides;
768  bool enableExitCodeErrorsOverrides;
769  bool enableProcessFailureErrorsOverrides;
770 
771  bool enablePreChunkActionsOverrides;
772  bool enablePostChunkActionsOverrides;
773  bool enablePreJobActionsOverrides;
774  bool enablePostJobActionsOverrides;
775 
776  std::map<std::string,std::string> mappings;
777  std::map<std::string,std::string> reverseMappings;
778 
779  std::vector<MTemplateItem*> submissionItems;
780  std::vector<MTemplateItemHolder*> submissionAdditionalItems;
781 
782  };
783 
784 };
785 
786 #endif