iAudioTask.h
1 #pragma once
2 
3 #include <map>
4 #include <list>
5 #include <vector>
6 #include <string>
7 #include <boost/system/error_code.hpp>
8 #include <mutex>
9 
10 #include "audioTypes.h"
11 
12 namespace dpyAudio {
13 
18 {
20  QUEUED = 1,
21  PROCESSING = 2,
27 };
28 
34  std::string audioFilePath = "";
37 
38  std::list<dpyAudio::AudioConfig> configurations;
39 
41  }
42 
51  AudioTaskInformation(dpyAudio::Port p, std::string a, dpyAudio::AudioTaskStatus s, dpyAudio::TaskType t, std::list<dpyAudio::AudioConfig> c): port(p), audioFilePath(a), status(s), type(t), configurations(c) {
52  }
53 
54 };
55 
56 }
57 
58 
64 {
65 public:
72  virtual void AudioTaskStatusChange(const int taskId,const dpyAudio::TaskType type, const dpyAudio::AudioTaskStatus& status) = 0;
77  {
78  }
79 };
80 
86 {
87 private:
88  dpyAudio::TaskType mType;
90  dpyAudio::AudioTaskInformation mAudioTaskInformation;
91  int mTaskId;
92  std::vector<AudioTaskObserver*> mObserversList;
93  static int mTaskCounter;
94  std::mutex mMutex;
95 
96  std::list<dpyAudio::AudioConfig> mConfigurations;
97 
98  int mVolume = 100;
99 
100 protected:
101  virtual void releaseResources();
102 
103 public:
104  boost::system::error_code subscribe(AudioTaskObserver* observer);
105  boost::system::error_code unsubscribe(AudioTaskObserver* observer);
106 
107  static void setTaskCounter(int taskCounter);
108  static int getTaskCounter();
109 
110  IAudioTask(dpyAudio::TaskType type, dpyAudio::Port port,std::string audioFilePath, std::list<dpyAudio::AudioConfig> configurations);
114  virtual ~IAudioTask();
115  void setStatus(dpyAudio::AudioTaskStatus status);
116  void asyncSetStatus(dpyAudio::AudioTaskStatus status);
117 
123  return mStatus;
124  }
125 
131  return mAudioTaskInformation;
132  }
133 
138  inline int getId() const
139  {
140  return mTaskId;
141  }
142 
148  {
149  return mType;
150  }
151 
156  inline std::list<dpyAudio::AudioConfig> getConfiguration() const {
157  return mConfigurations;
158  }
159 
164  inline int getVolume() const {
165  return mVolume;
166  }
167 
168 };
@ QUEUED
QUEUED.
Definition: iAudioTask.h:20
@ ERROR_WHILE_PROCESSING
ERROR WHILE PROCESSING.
Definition: iAudioTask.h:24
virtual void AudioTaskStatusChange(const int taskId, const dpyAudio::TaskType type, const dpyAudio::AudioTaskStatus &status)=0
dpyAudio::AudioTaskInformation getAudioTaskInformation() const
Definition: iAudioTask.h:130
Audio Task Observer class.
Definition: iAudioTask.h:63
virtual ~AudioTaskObserver()
Destructor.
Definition: iAudioTask.h:76
@ NA_TYPE
NA_TYPE.
Definition: audioTypes.h:23
virtual ~IAudioTask()
Destructor.
std::string audioFilePath
Audio file corresponding to the Task.
Definition: iAudioTask.h:34
Deepsy Audio namespace that includes the different enums, structs or method signatures that should be...
@ UNKNOWN_STATUS
UNKNOWN.
Definition: iAudioTask.h:19
Struct defining a port.
Definition: audioTypes.h:79
AudioTaskInformation(dpyAudio::Port p, std::string a, dpyAudio::AudioTaskStatus s, dpyAudio::TaskType t, std::list< dpyAudio::AudioConfig > c)
AudioTaskInformation constructor.
Definition: iAudioTask.h:51
dpyAudio::AudioTaskStatus status
Status corresponding to the Task.
Definition: iAudioTask.h:35
dpyAudio::TaskType getType() const
Definition: iAudioTask.h:147
dpyAudio::TaskType type
Type of audio task.
Definition: iAudioTask.h:36
std::list< dpyAudio::AudioConfig > getConfiguration() const
Get Task configuration.
Definition: iAudioTask.h:156
int getVolume() const
Get Task volume.
Definition: iAudioTask.h:164
@ TASK_STOPPED
STOPPED.
Definition: iAudioTask.h:26
@ PROCESSED_OK
PROCESSED OK.
Definition: iAudioTask.h:22
Structure containing Task information.
Definition: iAudioTask.h:32
std::list< dpyAudio::AudioConfig > configurations
Configurations of the audio task.
Definition: iAudioTask.h:38
TaskType
Enumeration defining the different type of audio tasks.
Definition: audioTypes.h:69
@ PLAY
PLAY.
Definition: audioTypes.h:71
AudioTaskStatus
Enumeration that includes the possible status of an Audio Task within the Audio system.
Definition: iAudioTask.h:17
dpyAudio::AudioTaskStatus getStatus() const
Get Task status.
Definition: iAudioTask.h:122
dpyAudio::Port port
Port information.
Definition: iAudioTask.h:33
Interface representing a Audio Task which will be reproduced in a specific port.
Definition: iAudioTask.h:85
@ ERROR_BEFORE_PROCESSING
ERROR BEFORE PROCESSING.
Definition: iAudioTask.h:23
@ ERROR_AFTER_PROCESSING
ERROR AFTER PROCESSING.
Definition: iAudioTask.h:25
@ PROCESSING
PROCESSING.
Definition: iAudioTask.h:21
int getId() const
Definition: iAudioTask.h:138