vendor_base.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef __VENDOR_VENDOR_BASE_H__
  2. #define __VENDOR_VENDOR_BASE_H__
  3. #include <condition_variable>
  4. #include <cstdio>
  5. #include <execinfo.h>
  6. #include <fstream>
  7. #include <functional>
  8. #include <getopt.h>
  9. #include <iostream>
  10. #include <memory>
  11. #include <mutex>
  12. #include <sstream>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. #include <string>
  16. #include <sys/stat.h>
  17. #include <sys/time.h>
  18. #include <thread>
  19. #include <unistd.h>
  20. #include <utils/logger.h>
  21. #include <vector>
  22. namespace vendor {
  23. class VendorBase;
  24. struct MyOpt {
  25. const char *name;
  26. int has_arg;
  27. int val;
  28. const char *desc;
  29. };
  30. struct LongOpts {
  31. const MyOpt *myOpt;
  32. int sizeOpt;
  33. LongOpts(const MyOpt opts[], const int size);
  34. void GetOptions(struct option *opts, std::string &shorts);
  35. MyOpt GetOption(char ch, int index);
  36. };
  37. class VendorBase {
  38. public:
  39. VendorBase();
  40. virtual ~VendorBase();
  41. static int32_t ParseOptionArgs(VendorBase *vendor, int argc, char *argv[]);
  42. int Exec();
  43. void Exit(int signal);
  44. protected:
  45. virtual int ParseCmdline(const std::string &optname, const std::string &optarg) = 0;
  46. virtual MyOpt *GetOpts() = 0;
  47. virtual int GetOptSize() = 0;
  48. virtual void Signal(int signal) {}
  49. public:
  50. virtual int Run() = 0;
  51. virtual std::string Name() = 0;
  52. virtual void Stop(int signal) = 0;
  53. static void SignalHandler(int fd, short event, void *arg);
  54. private:
  55. };
  56. } // namespace vendor
  57. #endif // __VENDOR_VENDOR_BASE_H__