📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 159行目: | 159行目: | ||
<br> | <br> | ||
===== D-Busヘルパーファイル ===== | ===== D-Busヘルパーファイル ===== | ||
<u> | <u>まず、D-Busヘルパー実行ファイルを作成する。</u><br> | ||
<syntaxhighlight lang="c++"> | |||
// 例: mochiu_helper.hファイル | |||
#ifndef MOCHIU_HELPER_H | |||
#define MOCHIU_HELPER_H | |||
#include <sdbus-c++/sdbus-c++.h> | |||
#include <iostream> | |||
#include <cstring> | |||
#include <memory> | |||
#include "mochiu_adaptor.h" // 生成されたプロキシヘッダをインクルード | |||
class MochiuHelper : public MochiuAdaptor | |||
{ | |||
public: | |||
MochiuHelper(sdbus::IConnection &connection, const std::string &objectPath) : MochiuAdaptor(connection, objectPath) | |||
{} | |||
// func1メソッドの実装 | |||
int func1(const int &arg1, const std::string &arg2) override | |||
{ | |||
std::cout << "func1 called with arg1: " << arg1 << " and arg2: " << arg2 << std::endl; | |||
return arg1 * 2; | |||
} | |||
}; | |||
class MochiuService | |||
{ | |||
private: | |||
std::unique_ptr<sdbus::IConnection> m_connection; | |||
std::unique_ptr<MochiuHelper> m_helper; | |||
public: | |||
MochiuService() : m_connection(sdbus::createSessionBusConnection("org.example.mochiu")), | |||
m_helper(std::make_unique<MochiuHelper>(*m_connection, "/org/example/mochiu")) | |||
{ | |||
m_connection->enterEventLoop(); | |||
} | |||
}; | |||
#endif // MOCHIU_HELPER_H | |||
</syntaxhighlight> | |||
<br> | |||
<u>次に、上記のDBusインターフェース定義ファイルからC++コードを生成する。</u><br> | |||
sdbus-c++ライブラリには、XMLファイルからC++のソースコードを生成するツールが付属している。 (sdbus-c++-xml2cppファイル)<br> | sdbus-c++ライブラリには、XMLファイルからC++のソースコードを生成するツールが付属している。 (sdbus-c++-xml2cppファイル)<br> | ||
sdbus-c++-xml2cppで生成されたソースコードを使用することにより、型安全性が向上して、D-Busインターフェースの使用がより簡単になる。<br> | sdbus-c++-xml2cppで生成されたソースコードを使用することにより、型安全性が向上して、D-Busインターフェースの使用がより簡単になる。<br> | ||
| 165行目: | 209行目: | ||
以下に示すコマンドを実行して、<クライアント側のソースコード>と<サーバ側のソースコード) を生成する。<br> | 以下に示すコマンドを実行して、<クライアント側のソースコード>と<サーバ側のソースコード) を生成する。<br> | ||
sdbus-c++-xml2cpp <D-Busインターフェース定義ファイル名 (XMLファイル)> \ | sdbus-c++-xml2cpp <D-Busインターフェース定義ファイル名 (XMLファイル)> \ | ||
--proxy=<D- | --proxy=<D-Busインターフェースメソッドが記述されたヘルパー実行ファイル側のヘッダファイル名 (プロキシヘッダ)> \ | ||
--adaptor=< | --adaptor=<生成するアダプターヘッダファイル名> | ||
# 例 : | # 例 : | ||
sdbus-c++-xml2cpp org.example.mochiu.xml \ | sdbus-c++-xml2cpp org.example.mochiu.xml \ | ||
--proxy= | --proxy=mochiu_helper.h \ | ||
--adaptor=mochiu_adaptor.h | --adaptor=mochiu_adaptor.h | ||
<br> | <br> | ||
<u> | <u>最後に、生成されたソースコードを上記のヘルパー実行ファイルのソースコードに統合する。</u> | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
// 例: mochiu_header.hファイル | |||
#include "mochiu_adaptor.h" // 生成されたプロキシヘッダをインクルード | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
===== D-Busの呼び出し側 ===== | ===== D-Busの呼び出し側 ===== | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||