Common Object Interface Layer. [詳細]
構成 | |
class | Allocator |
Allocator クラス. [詳細] | |
class | Async |
Async クラス. [詳細] | |
class | Async_t |
Async_t テンプレートクラス. [詳細] | |
class | Async_ref_t |
Async_ref_t テンプレートクラス. [詳細] | |
class | Condition |
Condition テンプレートクラス. [詳細] | |
class | DynamicLib |
DynamicLib クラス. [詳細] | |
class | Factory |
Factory テンプレートクラス. [詳細] | |
class | GlobalFactory |
GlobalFactory テンプレートクラス. [詳細] | |
class | Guard |
Guard テンプレートクラス. [詳細] | |
class | log_streambuf |
log_streambuf テンプレートクラス [詳細] | |
class | log_stream |
log_stream テンプレートクラス [詳細] | |
class | Mutex |
Mutex クラス. [詳細] | |
class | NonCopyable |
コピー禁止ミックスイン [詳細] | |
class | NonCopyableCRTP |
コピー禁止ミックスイン(CRTP版) [詳細] | |
class | GetOpt |
GetOpt クラス. [詳細] | |
class | PeriodicTask |
周期タスクスレッド実行クラス [詳細] | |
class | TaskFuncBase |
TaskFuncBase クラス. [詳細] | |
class | TaskFunc |
TaskFunc テンプレートクラス. [詳細] | |
class | PeriodicTaskBase |
PeriodicTaskBase クラス. [詳細] | |
class | Properties |
プロパティセットを表現するクラス [詳細] | |
class | SignalAction |
SignalAction クラス. [詳細] | |
class | Singleton |
Singleton テンプレートクラス. [詳細] | |
class | Task |
Task クラス. [詳細] | |
class | TimeMeasure |
TimeMeasure クラス. [詳細] | |
class | Timer |
Timerクラス. [詳細] | |
class | TimeValue |
TimeValue クラス. [詳細] | |
class | UUID |
class | UUID_Generator |
型定義 | |
typedef log_streambuf< char > | LogStreamBuffer |
typedef log_stream< char > | LogStream |
typedef ::utsname | utsname |
システム情報取得 | |
typedef ::pid_t | pid_t |
呼び出し元プロセスのプロセスID取得 | |
typedef void(* | SignalHandler )(int) |
typedef std::vector< std::string > | vstring |
関数 | |
template<typename Object , typename Func > | |
Async_t< Object, Func > * | AsyncInvoker (Object *obj, Func func, bool auto_delete=false) |
非同期メンバー関数呼び出しヘルパー関数 | |
template<typename Object , typename Func > | |
Async_ref_t< Object, Func > * | AsyncInvoker (Object *obj, Func *func, bool auto_delete=false) |
非同期メンバー関数呼び出しヘルパー関数 | |
unsigned short | crc16 (const char *str, size_t len) |
unsigned long | crc32 (const char *str, size_t len) |
CRC-32 計算関数. | |
template<class AbstractClass , class ConcreteClass > | |
AbstractClass * | Creator () |
Creator テンプレート. | |
template<class AbstractClass , class ConcreteClass > | |
void | Destructor (AbstractClass *&obj) |
Destructor テンプレート. | |
std::string | dirname (char *path) |
ファイルパスよりディレクトリ部分を取得する | |
std::string | basename (const char *path) |
ファイルパスよりファイル名部分を取得する | |
coil::vstring | filelist (const char *path, const char *glob_str="") |
ファイルリストを取得する | |
int | uname (utsname *name) |
pid_t | getpid () |
pid_t | getppid () |
呼び出し元プロセスの親プロセスのプロセスID取得 | |
char * | getenv (const char *name) |
環境変数取得 | |
int | launch_shell (std::string command) |
プロセスを起動する | |
int | daemon (int nochdir, int noclose) |
bool | dest_to_endpoint (std::string dest_addr, std::string &endpoint) |
宛先アドレスから利用されるエンドポイントアドレスを得る | |
bool | find_dest_ifname (std::string dest_addr, std::string &dest_if) |
宛先アドレスから利用されるネットワークインターフェース名を得る | |
bool | ifname_to_ipaddr (std::string ifname, std::string &ipaddr) |
ネットワークインターフェース名からIPアドレスを得る | |
std::wstring | string2wstring (std::string str) |
string から wstring への変換 | |
std::string | wstring2string (std::wstring wstr) |
wstring から string への変換 | |
void | toUpper (std::string &str) |
大文字への変換 | |
void | toLower (std::string &str) |
小文字への変換 | |
int | getlinePortable (std::istream &istr, std::string &line) |
入力ストリームから1行読み込む | |
bool | isEscaped (const std::string &str, std::string::size_type pos) |
文字列がエスケープされているか判断する | |
std::string | escape (const std::string str) |
文字列をエスケープする | |
std::string | unescape (const std::string str) |
文字列のエスケープを戻す | |
void | eraseBlank (std::string &str) |
文字列の空白文字を削除する | |
void | eraseHeadBlank (std::string &str) |
文字列の先頭の空白文字を削除する | |
void | eraseTailBlank (std::string &str) |
文字列の末尾の空白文字を削除する | |
void | eraseBothEndsBlank (std::string &str) |
文字列の先頭・末尾の空白文字を削除する | |
std::string | normalize (std::string &str) |
文字列を正規化する | |
unsigned int | replaceString (std::string &str, const std::string from, const std::string to) |
文字列を置き換える | |
vstring | split (const std::string &input, const std::string &delimiter, bool ignore_empty=false) |
文字列を分割文字で分割する | |
bool | toBool (std::string str, std::string yes, std::string no, bool default_value=true) |
与えられた文字列をbool値に変換する | |
bool | includes (const vstring &list, std::string value, bool ignore_case=true) |
文字列リスト中にある文字列が含まれるかどうかを判断する | |
bool | includes (const std::string &list, std::string value, bool ignore_case=true) |
文字列リスト中にある文字列が含まれるかどうかを判断する | |
bool | isAbsolutePath (const std::string &str) |
与えられた文字列が絶対パスかどうかを判断する | |
bool | isURL (const std::string &str) |
与えられた文字列がURLかどうかを判断する | |
template<class Printable > | |
std::string | otos (Printable n) |
与えられたオブジェクトをstdstringに変換 | |
template<typename To > | |
bool | stringTo (To &val, const char *str) |
与えられたstdstringをオブジェクトに変換 | |
template<> | |
bool | stringTo< std::string > (std::string &val, const char *str) |
与えられた文字列をstdstringに変換 | |
vstring | unique_sv (vstring sv) |
与えられた文字列リストから重複を削除 | |
std::string | flatten (vstring sv) |
与えられた文字列リストからCSVを生成 | |
char ** | toArgv (const vstring &args) |
与えられた文字列リストを引数リストに変換 | |
std::string | sprintf (char const *__restrict fmt,...) |
指定された書式に変換 | |
unsigned int | sleep (unsigned int seconds) |
指定された秒間は処理を休止する | |
int | sleep (TimeValue interval) |
指定された秒間は処理を休止する | |
int | usleep (useconds_t usec) |
指定されたマイクロ秒間は処理を休止する | |
int | gettimeofday (struct timeval *tv, struct timezone *tz) |
時刻とタイムゾーンを取得する | |
TimeValue | gettimeofday () |
時刻を取得する | |
int | settimeofday (const struct timeval *tv, const struct timezone *tz) |
時刻とタイムゾーンを設定する |
Common Object Interface Layer.
typedef log_stream<char> coil::LogStream |
typedef log_streambuf<char> coil::LogStreamBuffer |
typedef ::pid_t coil::pid_t |
呼び出し元プロセスのプロセスID取得
呼び出し元プロセスのプロセスIDを返す。
typedef void(* coil::SignalHandler)(int) |
typedef ::utsname coil::utsname |
システム情報取得
システム情報を構造体に設定して返す。
name | 構造体名称 |
typedef std::vector<std::string> coil::vstring |
Async_ref_t<Object, Func>* coil::AsyncInvoker | ( | Object * | obj, | |
Func * | func, | |||
bool | auto_delete = false | |||
) | [inline] |
非同期メンバー関数呼び出しヘルパー関数
メンバー関数を非同期に呼ぶためのヘルパー関数
obj | 登録対象オブジェクト | |
func | 非同期実行用関数 | |
auto_delete | 非同期実行終了時に自動的にインスタンス削除を行うかどうかのフラグ |
Async_t<Object, Func>* coil::AsyncInvoker | ( | Object * | obj, | |
Func | func, | |||
bool | auto_delete = false | |||
) | [inline] |
非同期メンバー関数呼び出しヘルパー関数
メンバー関数を非同期に呼ぶためのヘルパー関数 例
class A { public: // 時間のかかる関数 void hoge() { for (int i(0); i < 5; ++i) { std::cout << "hoge" << std::endl; sleep(1); } } // 時間のかかる関数 void munya(const char* msg) { for (int i(0); i < 10; ++i) { std::cout << "message is: " << msg << std::endl; sleep(1); } } int add_one(int val) { return val + 1; } }; この様なクラスのオブジェクトに対して、
A a; Async* invoker0(AsyncInvoker(&a, std::mem_fun(&A::hoge))); Async* invoker1(AsyncInvoker(&a, std::bind2nd(std::mem_fun(&A::munya), "ほげ"))); invoker0->invoke(); // すぐに戻る invoker1->invoke(); // すぐに戻る
delete invoker0; // 必ず削除すること delete invoker1; // 必ず削除すること
のように非同期の呼び出しができる。 呼び出しの戻り値を取得したい場合は、自前の関数オブジェクトを用意する。
class add_one_functor { int m_val, m_ret; public: add_one_functor(int val) : m_val(val), m_ret(0) {} void operaotr(A* obj) { m_ret = obj->add_one(m_val); } int get_ret() { return m_ret; } };
上記の関数オブジェクトのインスタンスを作成し、そのポインタを渡す。
add_one_functor aof(100); Async* invoker2(AsyncInvoker(&a, &aof)); invoker2->invoke(); invoker2->wait(); std::cout << "result: " << aof.get_ret() << std::endl; delete invoker2;
通常、AsyncInvoker が返すオブジェクトは明示的に削除しなければ ならないが、第三引数に true を渡すことで、非同期実行が終了すると同時に 自動的にインスタンスが削除される。
// invoker3 は削除 (delete invoker3) してはいけない Async* invoker3(AsyncInvoker(&a, std::mem_fun(&A::hoge), true));
// インスタンス生成と同時に実行することもできる。 AsyncInvoker(&a, std::mem_fun(&A::hoge))->invoke();
obj | 登録対象オブジェクト | |
func | 非同期実行用関数 | |
auto_delete | 非同期実行終了時に自動的にインスタンス削除を行うかどうかのフラグ |
std::string coil::basename | ( | const char * | path | ) | [inline] |
ファイルパスよりファイル名部分を取得する
ファイルパスよりファイル名部分を取得する。
path | ファイルパス |
unsigned short coil::crc16 | ( | const char * | str, | |
size_t | len | |||
) |
unsigned long coil::crc32 | ( | const char * | str, | |
size_t | len | |||
) |
CRC-32 計算関数.
CRC種類: RFC2083 Appendix 15 CRC多項式: 0xedb88320L 初期値: 0xFFFFFFFF 出力XOR: 0xFFFFFFFF 入力ビット反転: なし 出力ビット反転: なし ビットシフト: 右
str | データストリーム | |
len | データ長 |
AbstractClass* coil::Creator | ( | ) | [inline] |
Creator テンプレート.
int coil::daemon | ( | int | nochdir, | |
int | noclose | |||
) |
bool coil::dest_to_endpoint | ( | std::string | dest_addr, | |
std::string & | endpoint | |||
) |
宛先アドレスから利用されるエンドポイントアドレスを得る
宛先アドレスを与えると、その際に利用されるエンドポイントのアドレス が返される。宛先アドレス dest_addr には、IPアドレスまたはFQDNホス ト名を与えることができる。宛先アドレスが到 達可能であり、利用するエンドポイントが得られた場合 true、宛先アド レスに到達できない場合は false が返される。
dest_addr | 宛先アドレスまたはホスト名 | |
dest_if | 宛先と通信を行う際に使用されるインターフェース名 |
void coil::Destructor | ( | AbstractClass *& | obj | ) | [inline] |
Destructor テンプレート.
std::string coil::dirname | ( | char * | path | ) | [inline] |
ファイルパスよりディレクトリ部分を取得する
ファイルパスよりディレクトリ部分を取得する。
path | ファイルパス |
void coil::eraseBlank | ( | std::string & | str | ) |
文字列の空白文字を削除する
与えられた文字列の空白文字を削除する。 空白文字として扱うのは' '(スペース)と'\t'(タブ)。
str | 空白文字削除処理文字列 |
void coil::eraseBothEndsBlank | ( | std::string & | str | ) |
文字列の先頭・末尾の空白文字を削除する
与えられた文字列の先頭および末尾に存在する空白文字を削除する。 空白文字として扱うのは' '(スペース)と'\t'(タブ)。
str | 先頭末尾空白文字削除処理文字列 |
void coil::eraseHeadBlank | ( | std::string & | str | ) |
文字列の先頭の空白文字を削除する
与えられた文字列の先頭に存在する空白文字を削除する。 空白文字として扱うのは' '(スペース)と'\t'(タブ)。
str | 先頭空白文字削除処理文字列 |
void coil::eraseTailBlank | ( | std::string & | str | ) |
文字列の末尾の空白文字を削除する
与えられた文字列の末尾に存在する空白文字を削除する。 空白文字として扱うのは' '(スペース)と'\t'(タブ)。
str | 末尾空白文字削除処理文字列 |
std::string coil::escape | ( | const std::string | str | ) |
文字列をエスケープする
次の文字をエスケープシーケンスに変換する。
HT -> "\t"
LF -> "\n"
CR -> "\r"
FF -> "\f"
シングルクオート、ダブルクオートについてはとくに処理はしない。
str | エスケープ処理対象文字列 |
coil::vstring coil::filelist | ( | const char * | path, | |
const char * | glob_str = "" | |||
) | [inline] |
ファイルリストを取得する
ディレクトリパスの中で指定ファイルにマッチするリストを取得する。
path | ディレクトリパス | |
glob_str | ファイル名 |
bool coil::find_dest_ifname | ( | std::string | dest_addr, | |
std::string & | dest_if | |||
) |
宛先アドレスから利用されるネットワークインターフェース名を得る
宛先アドレスを与えると、その際に利用されるネットワークインターフェー ス名をルーティングテーブルから取得する。宛先アドレス dest_addr に は、IPアドレスまたはFQDNホスト名を与えることができる。返される dest_if はネットワークインターフェース名である。宛先アドレスが到達 可能であり、利用するネットワークインターフェース名が得られた場合 true、宛先アドレスに到達できない場合は false が返される。
dest_addr | 宛先アドレスまたはホスト名 | |
dest_if | 宛先と通信を行う際に使用されるインターフェース名 |
std::string coil::flatten | ( | vstring | sv | ) |
与えられた文字列リストからCSVを生成
引数で与えられた文字列リストの各要素を並べたCSVを生成する。 文字列リストが空の場合には空白文字を返す。
sv | CSV変換対象文字列リスト |
char* coil::getenv | ( | const char * | name | ) | [inline] |
環境変数取得
環境変数を返す。
name | 環境変数名称 |
int coil::getlinePortable | ( | std::istream & | istr, | |
std::string & | line | |||
) |
入力ストリームから1行読み込む
入力ストリームから1行読み込む。 入力ストリームはの改行コードはUNIX, Windowsの改行コードのいずれか、 もしくは混在していてもよい。
istr | 入力ストリーム | |
line | 読み込んだ文字列を格納する変数 |
pid_t coil::getpid | ( | ) | [inline] |
pid_t coil::getppid | ( | ) | [inline] |
呼び出し元プロセスの親プロセスのプロセスID取得
呼び出し元プロセスの親プロセスのプロセスIDを返す。
TimeValue coil::gettimeofday | ( | ) | [inline] |
int coil::gettimeofday | ( | struct timeval * | tv, | |
struct timezone * | tz | |||
) | [inline] |
時刻とタイムゾーンを取得する
時刻とタイムゾーンを取得する。
tv | 時刻構造体 | |
tz | タイムゾーン構造体 |
参照元 gettimeofday(), setTimestamp(), と coil::Condition< Mutex >::wait().
bool coil::ifname_to_ipaddr | ( | std::string | ifname, | |
std::string & | ipaddr | |||
) |
ネットワークインターフェース名からIPアドレスを得る
ネットワークインターフェース名を与えると、当該インターフェースに割 り当てられたIPアドレスを返す。IPアドレスが割り当てられていない場合 は、falseが返される。
ifname | ネットワークインターフェース名 | |
ipaddr | ネットワークインターフェースに割り当てられたIPアドレス |
bool coil::includes | ( | const std::string & | list, | |
std::string | value, | |||
bool | ignore_case = true | |||
) |
文字列リスト中にある文字列が含まれるかどうかを判断する
第1引数にカンマ区切りのリストを、第2引数に探索対象文字列を指定し、 その文字列が第1引数の中に含まれるかを判断する。
list | 対象文字列 | |
value | 探索文字列 |
bool coil::includes | ( | const vstring & | list, | |
std::string | value, | |||
bool | ignore_case = true | |||
) |
文字列リスト中にある文字列が含まれるかどうかを判断する
第1引数にカンマ区切りのリストを、第2引数に探索対象文字列を指定し、 その文字列が第1引数の中に含まれるかを判断する。
list | 対象リスト | |
value | 探索文字列 |
bool coil::isAbsolutePath | ( | const std::string & | str | ) |
与えられた文字列が絶対パスかどうかを判断する
与えられた文字列が絶対パス表現であるかどうかを判断する。 文字列が以下の場合には絶対パスとして判断する。
str | 判定対象文字列 |
bool coil::isEscaped | ( | const std::string & | str, | |
std::string::size_type | pos | |||
) |
文字列がエスケープされているか判断する
指定された文字がエスケープされているかどうかを判断する。
str | エスケープされているかどうか判断する文字を含む文字列 | |
pos | エスケープされているかどうか判断する文字の位置 |
bool coil::isURL | ( | const std::string & | str | ) |
与えられた文字列がURLかどうかを判断する
与えられた文字列がURL表現かどうかを判断する。 与えられた文字列中に、'://'という文字列が含まれている場合には URL表現として判断する。
str | 判定対象文字列 |
int coil::launch_shell | ( | std::string | command | ) |
プロセスを起動する
プロセスを起動する。引数には起動するファイル名を与える。実行ファイ ルは環境変数 PATH に設定されたコマンドサーチパス内から検索され、見 つかればコマンドが起動される。プロセスの起動が成功すれば 0、失敗す れば -1 を返す。
command | 起動する実行ファイルのフルパス |
std::string coil::normalize | ( | std::string & | str | ) |
文字列を正規化する
与えられた文字列の先頭および末尾に存在する空白文字を削除し、 英字をすべて小文字に変換する。
str | 処理対象文字列 |
std::string coil::otos | ( | Printable | n | ) | [inline] |
与えられたオブジェクトをstdstringに変換
引数で指定されたオブジェクトを文字列に変換する。
n | 変換対象オブジェクト |
unsigned int coil::replaceString | ( | std::string & | str, | |
const std::string | from, | |||
const std::string | to | |||
) |
文字列を置き換える
与えられた文字列に対して、指定した文字の置き換えを行う。
str | 置き換え処理対象文字列 | |
from | 置換元文字 | |
to | 置換先文字 |
int coil::settimeofday | ( | const struct timeval * | tv, | |
const struct timezone * | tz | |||
) | [inline] |
時刻とタイムゾーンを設定する
時刻とタイムゾーンを設定する。
tv | 時刻構造体 | |
tz | タイムゾーン構造体 |
int coil::sleep | ( | TimeValue | interval | ) | [inline] |
指定された秒間は処理を休止する
指定された秒間は処理を休止する。
interval | TimeValueオブジェクト |
unsigned int coil::sleep | ( | unsigned int | seconds | ) | [inline] |
指定された秒間は処理を休止する
指定された秒間は処理を休止する。
seconds | 秒数 |
vstring coil::split | ( | const std::string & | input, | |
const std::string & | delimiter, | |||
bool | ignore_empty = false | |||
) |
文字列を分割文字で分割する
設定された文字列を与えられたデリミタで分割する。
input | 分割対象文字列 | |
delimiter | 分割文字列(デリミタ) |
std::string coil::sprintf | ( | char const *__restrict | fmt, | |
... | ||||
) |
指定された書式に変換
引数で与えられた書式に変換して返す。
fmt | 書式 |
std::wstring coil::string2wstring | ( | std::string | str | ) |
string から wstring への変換
与えられた string 文字列を wstring 文字列に変換
str | std::string 型の入力文字列 |
bool coil::stringTo | ( | To & | val, | |
const char * | str | |||
) | [inline] |
与えられたstdstringをオブジェクトに変換
引数で与えられた文字列を指定されたオブジェクトに変換する。
val | 変換先オブジェクト | |
str | 変換元文字列 |
bool coil::stringTo< std::string > | ( | std::string & | val, | |
const char * | str | |||
) | [inline] |
与えられた文字列をstdstringに変換
引数で与えられた文字列をstdstringに変換する。
val | 変換先文字列 | |
str | 変換元文字列 |
char** coil::toArgv | ( | const vstring & | args | ) |
与えられた文字列リストを引数リストに変換
引数で与えられた文字列リストの各要素末尾に'\0'を加え、引数リスト に変換する。
args | 変換対象文字列リスト |
bool coil::toBool | ( | std::string | str, | |
std::string | yes, | |||
std::string | no, | |||
bool | default_value = true | |||
) |
与えられた文字列をbool値に変換する
指定された文字列を、true表現文字列、false表現文字列と比較し、その結果を bool値として返す。 比較の結果、true表現文字列、false表現文字列のどちらとも一致しない場合は、 与えられたデフォルト値を返す。
str | 判断対象文字列 | |
yes | true表現文字列 | |
no | false表現文字列 | |
default_value | デフォルト値(デフォルト値:true) |
void coil::toLower | ( | std::string & | str | ) |
小文字への変換
与えられた文字列を小文字に変換
str | 入力文字列 |
void coil::toUpper | ( | std::string & | str | ) |
大文字への変換
与えられた文字列を大文字に変換
str | 入力文字列 |
int coil::uname | ( | utsname * | name | ) | [inline] |
std::string coil::unescape | ( | const std::string | str | ) |
文字列のエスケープを戻す
次のエスケープシーケンスを文字に変換する。
"\t" -> HT
"\n" -> LF
"\r" -> CR
"\f" -> FF
"\"" -> "
"\'" -> '
※エスケープ処理の完全な逆変換にはなっていないため、注意が必要。
str | アンエスケープ処理対象文字列 |
vstring coil::unique_sv | ( | vstring | sv | ) |
与えられた文字列リストから重複を削除
引数で与えられた文字列リストから重複を削除したリストを作成する。
sv | 確認元文字列リスト |
int coil::usleep | ( | useconds_t | usec | ) | [inline] |
指定されたマイクロ秒間は処理を休止する
指定されたマイクロ秒間は処理を休止する。
usec | マイクロ秒数 |
std::string coil::wstring2string | ( | std::wstring | wstr | ) |
wstring から string への変換
与えられた wstring 文字列を string 文字列に変換
str | std::wstring 型の入力文字列 |