#ifndef HCADECODER_SRC_HCA_ASYNC_WORKER_H
#define HCADECODER_SRC_HCA_ASYNC_WORKER_H

#include <napi.h>
#include "clHCA.h"

class HCAAsyncWorker : public Napi::AsyncWorker {
public:
  HCAAsyncWorker(unsigned int, unsigned int, const std::string&, const std::string&, double, int, int, const Napi::Function&);
  HCAAsyncWorker(unsigned int, unsigned int, const Napi::Object&, const std::string&, double, int, int, const Napi::Function&);
  void Execute();
  void OnOK();
private:
  clHCA _hca;
  std::string _hcaFile;
  void* _hcabuf;
  size_t _hcasize;
  Napi::ObjectReference _hcaArrayBuffer;
  std::string _wavFile;
  double _volumn;
  int _mode;
  int _loop;
  bool _res;
  std::vector<uint8_t>* _buf;
};

#endif
