qt dbus 예제

Qt는 C++ 코드에서 D-Bus 서비스에 쉽게 액세스할 수 있는 몇 가지 도구를 제공합니다. D-Bus의 특징 중 하나는 성찰입니다. 이 기능을 지원하는 D-Bus 개체는 런타임에 내성적으로 되어 개체를 설명하는 XML 문자열을 반환할 수 있습니다. qdbuscpp2xml 도구는 QObject 파생 클래스를 포함하는 C++ 소스 또는 헤더 파일을 구문 분석하고 D-Bus 내성 XML을 생성합니다. 이 RemoteControllerCar 예제에서 자동차는 서버 역할을 하며 컨트롤러는 클라이언트입니다. 이 경우 핫플러그킹은 한 보안 도메인(이 경우 운영 체제 커널)에서 다른 보안 도메인(로그인한 사용자를 위한 데스크톱 또는 원격 시스템 관리자)으로 이벤트를 제공해야 하는 고전적인 « 원격 시스템 관리자 » 문제입니다. 모든 효과적인 응답은 다른 방식으로 진행되어야 합니다: 커널이 원하는 장치 기능을 노출할 수 있는 몇 가지 작업을 취하는 원격 도메인. (예: 모임이 끝날 때까지 새 하드웨어를 유휴 상태로 두는 등 비동기적으로 작업을 수행할 수 있습니다.) 이 글에서, 리눅스는 널리 이러한 문제에 대 한 솔루션을 채택 하지 않습니다. 그러나 새로운 D-Bus 작업이 이 문제를 해결하기 시작할 수 있습니다. 위의 예제에서는 모든 공용 슬롯을 내보내고 스크립팅 가능한 신호만 내보려고 합니다. 따라서 이 명령줄을 사용합니다: 이것은 D-Bus 서비스, 개체 경로 및 사용 가능한 메서드, 신호 및 속성을 표시하는 그래픽 도구입니다. 일반적인 스크린 샷은 아래와 같습니다. qtdbus 도구와 유사하지만 그래픽 사용자 인터페이스를 제공합니다.

튜토리얼을 향상시키는 것은 확실히 권장됩니다 – 메일링 리스트에 패치 또는 제안을 보냅니다. D-Bus 바인딩을 만드는 경우 몇 가지 예제가 있는 짧은 섹션인 경우 바인딩에 대한 자습서에 섹션을 추가하십시오. Qt(2)는 Qt 설명서에서 자세히 다루는 D-Bus에 대한 인터페이스 집합을 제공합니다. 관련 Qt 클래스 중 일부는 QDBusConnection, QDBusInterface 및 QDBusMessage를 포함한다. Qt는 또한 D-버스를 사용하는 예제 응용 프로그램의 소수와 함께 제공됩니다. Qt에는 qdbus, qdbusviewer, qdbuscpp2xml 및 qdbusxml2cpp의 네 가지 D-Bus 관련 도구가 포함되어 있습니다. 버스 데몬은 메시지를 다시 정렬하지 않습니다. 즉, 동일한 받는 사람에게 두 개의 메서드 호출 메시지를 보내면 전송된 순서대로 수신됩니다. 그러나 수신자는 순서대로 통화에 회신할 필요가 없습니다. 예를 들어 각 메서드 호출을 별도 스레드에서 처리하고 스레드가 완료되는 시기에 따라 정의되지 않은 순서로 회신 메시지를 반환할 수 있습니다. 메서드 호출에는 응답 메시지를 호출하는 데 메서드 호출이 사용하는 고유한 일련 번호가 있습니다.