MEL
Microthread & Execution library
GenericProcess.h
1 #pragma once
2 /*
3  * SPDX-FileCopyrightText: 2005,2022 Daniel Barrientos
4  * <danivillamanin@gmail.com>
5  *
6  * SPDX-License-Identifier: MIT
7  */
8 #include <tasking/GenericProcessDefs.h>
9 #include <tasking/Process.h>
11 
12 #include <functional>
13 namespace mel
14 {
15  namespace tasking
16  {
23  class MEL_API GenericProcess : public Process
24  {
25  public:
26  typedef std::function<EGenericProcessResult( uint64_t, Process* )>
27  GenericCallback;
28 
29  private:
30  GenericCallback mProcessCallback;
31  std::function<bool()> mKillCallback;
32  volatile EGenericProcessResult mUpdateResult;
33 
34  public:
40  ~GenericProcess();
41 
47  template <class F> void setProcessCallback( F&& functor );
48  inline const GenericProcess::GenericCallback&
49  getProcessCallback() const;
50  template <class F> void setKillCallback( F&& functor );
51 
52  protected:
53  void onInit( uint64_t msegs ) override;
57  bool onKill() override;
63  void onUpdate( uint64_t msegs ) override;
64  };
65  template <class F>
67  {
68  mProcessCallback = std::forward<F>( functor );
69  }
70  const GenericProcess::GenericCallback&
71  GenericProcess::getProcessCallback() const
72  {
73  return mProcessCallback;
74  }
75  template <class F> void GenericProcess::setKillCallback( F&& functor )
76  {
77  mKillCallback = std::forward<F>( functor );
78  }
79  } // namespace tasking
80 } // namespace mel
A Process constructed from a functor with signature EGenericProcessResult(uint64_t,...
Definition: GenericProcess.h:24
void setProcessCallback(F &&functor)
Set callable to be executed on process update.
Definition: GenericProcess.h:66
void onInit(uint64_t msegs) override
void onUpdate(uint64_t msegs) override
A periodic task, implementing a microthread.
Definition: Process.h:107
EGenericProcessResult
Result from functor used in a GenericProcess.
Definition: GenericProcessDefs.h:14
Definition: Callback_Impl.h:11