/*---------------------------------------------------------------------------*/
/* system.h                                                                  */
/* copyright (c) innovaphone 2016                                            */
/*                                                                           */
/*---------------------------------------------------------------------------*/

typedef enum {
    ARM,
    X86_64,
    ARM64
} architecture_t;

class ISystem {
public:
    static void GetArchitecture(char * buffer, size_t len);
    static architecture_t GetArchitecture();
    static const char * GetArchitectureName();
    static bool GetHostname(char * buffer, size_t len); /* provide 256 bytes buffer to avoid truncation */
    static bool GetUsername(char * buffer, size_t len); /* provide 256 bytes buffer to avoid truncation */
    static bool GetClientname(char * buffer, size_t len); /* provide 256 bytes buffer to avoid truncation */
    static bool GetOperatingSystem(char * buffer, size_t len);
    static bool GetSessionname(char* buffer, size_t len); /* provide 256 bytes buffer to avoid truncation */
    static void Sync();
    static const char * Label();
    static const char * LabelRootfs();
    static const char * ReleaseState();
	static bool SetBindServiceCapability(const char * path);
    static bool IsVirtualMachine();
};
