콘텐츠로 이동
무료 평가 시작

pdcomm::License

클래스

SECS/GEM 라이브러리의 PDComm 라이선스를 설치하고 확인합니다.

class License

선언 위치: #include <pdcomm_license.hpp>

새 SECS/GEM 통신을 시작하려면(HSMS 또는 SECS-I 엔드포인트를 만들거나 시작하고, GEM300 기능 카탈로그를 구성하려면) 해당 모듈을 허가하는 라이선스가 필요합니다. 없으면 호출이 PDCOMM_LICENSE_REQUIRED로 실패합니다. 이미 실행 중인 엔드포인트는 멈추지 않습니다.

라이선스는 install()로 설치한 텍스트, PDCOMM_LICENSE(텍스트)와 PDCOMM_LICENSE_FILE(경로) 환경 변수, 실행 파일 또는 라이브러리 옆의 pdcomm.license 파일, 사용자와 시스템 구성 디렉터리에서 읽습니다. 모든 소스를 합쳐서 사용합니다.

std::ifstream file("pdcomm.license");
std::string text((std::istreambuf_iterator<char>(file)), {});
pdcomm::License::install(text);
std::cout << pdcomm::License::hostId() << '\n' << pdcomm::License::status() << '\n';

참고

  • 모든 멤버는 정적(static)이며 스레드에 안전합니다. 실패하면 pdcomm::Error가 아니라 std::runtime_error를 던집니다.

멤버

hostId

메서드

이 호스트의 ID PDH1-XXXX-XXXX-XXXX-XXXX를 반환합니다.

static std::string hostId()

선언 위치: #include <pdcomm_license.hpp>

SECS/GEM 런타임 라이선스와 개발자 라이선스에는 실행할 수 있는 호스트 ID 목록이 들어 있습니다.

반환값

호스트 ID입니다.

참고

  • 예외 std::runtime_error: 머신 ID를 읽을 수 없으면 발생합니다.

install

메서드

라이선스 텍스트를 설치하고, 이전에 설치한 텍스트를 교체합니다.

static void install(const std::string &text)

선언 위치: #include <pdcomm_license.hpp>

텍스트에는 -----BEGIN PDCOMM LICENSE----- 블록이 하나 이상 들어 있습니다. 서명이 유효한 블록이 하나 이상 있으면 받아들이며, 빈 문자열을 넘기면 설치한 텍스트를 제거합니다.

매개변수

이름설명
text최대 1048576바이트의 UTF-8 라이선스 텍스트입니다.

참고

  • 예외 std::runtime_error: 텍스트가 너무 크거나, UTF-8이 아니거나, 서명이 유효한 블록이 없으면 발생합니다. 이때 이전 설치는 유지됩니다.

status

메서드

SECS/GEM 라이브러리의 라이선스 상태를 JSON 객체로 반환합니다.

static std::string status()

선언 위치: #include <pdcomm_license.hpp>

객체는 build_date, host_id, program, 찾은 라이선스 sources, verification 결과가 붙은 모든 라이선스 블록 licenses, 그리고 modules에 모듈마다 state(예: licensed, evaluation, missing, expired, host-mismatch), granted, days_left를 보고합니다.

반환값

상태 JSON 텍스트입니다.

참고

  • 예외 std::runtime_error: 네이티브 호출이 실패하면 발생합니다.