WebCFace 2.5.2
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
func.cc File Reference
#include "c_wcf_internal.h"
#include "webcface/func.h"
Include dependency graph for func.cc:

Functions

template<typename CharT >
wcfStatus wcfFuncRespondT (const typename CharType< CharT >::CHandle *handle, const typename CharType< CharT >::CVal *value)
 
wcfMultiVal wcfValI (int value)
 int型のwcfMultiValを構築
 
wcfMultiVal wcfValD (double value)
 double型のwcfMultiValを構築
 
wcfMultiVal wcfValS (const char *value)
 文字列型のwcfMultiValを構築
 
wcfMultiValW wcfValWI (int value)
 int型のwcfMultiValWを構築
 
wcfMultiValW wcfValWD (double value)
 double型のwcfMultiValWを構築
 
wcfMultiValW wcfValWS (const wchar_t *value)
 文字列型のwcfMultiValWを構築 (wstring)
 
wcfStatus wcfFuncRun (wcfClient *wcli, const char *member, const char *field, const wcfMultiVal *args, int arg_size, wcfMultiVal **result)
 関数を呼び出す
 
wcfStatus wcfFuncRunW (wcfClient *wcli, const wchar_t *member, const wchar_t *field, const wcfMultiValW *args, int arg_size, wcfMultiValW **result)
 関数を呼び出す (wstring)
 
wcfStatus wcfFuncRunAsync (wcfClient *wcli, const char *member, const char *field, const wcfMultiVal *args, int arg_size, wcfPromise **async_res)
 関数を非同期で呼び出す
 
wcfStatus wcfFuncRunAsyncW (wcfClient *wcli, const wchar_t *member, const wchar_t *field, const wcfMultiValW *args, int arg_size, wcfPromise **async_res)
 関数を非同期で呼び出す (wstring)
 
wcfStatus wcfFuncGetResult (wcfPromise *async_res, wcfMultiVal **result)
 非同期で呼び出した関数の実行結果を取得
 
wcfStatus wcfFuncWaitResult (wcfPromise *async_res, wcfMultiVal **result)
 非同期で呼び出した関数の実行完了まで待機し、結果を取得
 
wcfStatus wcfFuncSet (wcfClient *wcli, const char *field, const wcfValType *arg_types, int arg_size, wcfValType return_type, wcfFuncCallback callback, void *user_data)
 関数を登録する
 
wcfStatus wcfFuncSetW (wcfClient *wcli, const wchar_t *field, const wcfValType *arg_types, int arg_size, wcfValType return_type, wcfFuncCallbackW callback, void *user_data)
 関数を登録する (wstring)
 
wcfStatus wcfFuncSetAsync (wcfClient *wcli, const char *field, const wcfValType *arg_types, int arg_size, wcfValType return_type, wcfFuncCallback callback, void *user_data)
 非同期に実行される関数を登録する
 
wcfStatus wcfFuncSetAsyncW (wcfClient *wcli, const wchar_t *field, const wcfValType *arg_types, int arg_size, wcfValType return_type, wcfFuncCallbackW callback, void *user_data)
 非同期に実行される関数を登録する (wstring)
 
wcfStatus wcfFuncListen (wcfClient *wcli, const char *field, const wcfValType *arg_types, int arg_size, wcfValType return_type)
 関数呼び出しの待受を開始する
 
wcfStatus wcfFuncListenW (wcfClient *wcli, const wchar_t *field, const wcfValType *arg_types, int arg_size, wcfValType return_type)
 関数呼び出しの待受を開始する (wstring)
 
wcfStatus wcfFuncFetchCall (wcfClient *wcli, const char *field, wcfFuncCallHandle **handle)
 関数が呼び出されたかどうかを確認
 
wcfStatus wcfFuncFetchCallW (wcfClient *wcli, const wchar_t *field, wcfFuncCallHandleW **handle)
 関数が呼び出されたかどうかを確認 (wstring)
 
wcfStatus wcfFuncRespond (const wcfFuncCallHandle *handle, const wcfMultiVal *value)
 関数呼び出しに対して値を返す
 
wcfStatus wcfFuncRespondW (const wcfFuncCallHandleW *handle, const wcfMultiValW *value)
 関数呼び出しに対して値を返す (wstring)
 
wcfStatus wcfFuncReject (const wcfFuncCallHandle *handle, const char *message)
 関数呼び出しに対してエラーメッセージを返す
 
wcfStatus wcfFuncRejectW (const wcfFuncCallHandleW *handle, const wchar_t *message)
 関数呼び出しに対してエラーメッセージを返す (wstring)
 

Function Documentation

◆ wcfFuncFetchCall()

wcfStatus wcfFuncFetchCall ( wcfClient wcli,
const char *  field,
wcfFuncCallHandle **  handle 
)

関数が呼び出されたかどうかを確認

Since
ver1.5

1回の関数呼び出しに対してfetchCallは1回だけhandlerを返す

呼び出されたらその引数と、値を返す用の関数が入ったhandlerを返す。 まだ呼び出されてなければnulloptを返す。

Parameters
wcliClientポインタ
field関数名
handlehandleポインタを受け取る変数
Returns
wcliが無効ならWCF_BAD_WCLI, まだ関数が呼び出されていない or ListenしていないならWCF_NOT_CALLED

◆ wcfFuncFetchCallW()

wcfStatus wcfFuncFetchCallW ( wcfClient wcli,
const wchar_t *  field,
wcfFuncCallHandleW **  handle 
)

関数が呼び出されたかどうかを確認 (wstring)

Since
ver2.0
See also
wcfFuncFetchCall

◆ wcfFuncGetResult()

wcfStatus wcfFuncGetResult ( wcfPromise async_res,
wcfMultiVal **  result 
)

非同期で呼び出した関数の実行結果を取得

Since
ver1.5
Parameters
async_res関数呼び出しに対応するPromise
result結果を格納する変数(wcfMultiVal*)へのポインタ (破棄するときには wcfDestroy() を使ってください)
Returns
async_resが無効な場合 WCF_BAD_HANDLE, 対象のmemberやfieldが存在しない場合 WCF_NOT_FOUND, 関数で例外が発生した場合 WCF_EXCEPTION (エラーメッセージがresultに入る), まだ結果が返ってきていない場合 WCF_NOT_RETURNED

◆ wcfFuncListen()

wcfStatus wcfFuncListen ( wcfClient wcli,
const char *  field,
const wcfValType arg_types,
int  arg_size,
wcfValType  return_type 
)

関数呼び出しの待受を開始する

Since
ver1.5
Parameters
wcliClientポインタ
field関数名
arg_types受け取る引数の型をwcfValTypeの配列で指定
arg_size受け取る引数の個数
return_type戻り値の型を指定
Returns
wcliが無効ならWCF_BAD_WCLI

◆ wcfFuncListenW()

wcfStatus wcfFuncListenW ( wcfClient wcli,
const wchar_t *  field,
const wcfValType arg_types,
int  arg_size,
wcfValType  return_type 
)

関数呼び出しの待受を開始する (wstring)

Since
ver2.0
See also
wcfFuncListen

◆ wcfFuncReject()

wcfStatus wcfFuncReject ( const wcfFuncCallHandle handle,
const char *  message 
)

関数呼び出しに対してエラーメッセージを返す

Since
ver1.5

エラーメッセージを返すとhandleはdeleteされ使えなくなる

Parameters
handle関数呼び出しに対応するhandle
message返すメッセージ (空文字列の代わりにNULLも可)
Returns
handleが無効ならWCF_BAD_HANDLE

◆ wcfFuncRejectW()

wcfStatus wcfFuncRejectW ( const wcfFuncCallHandleW handle,
const wchar_t *  message 
)

関数呼び出しに対してエラーメッセージを返す (wstring)

Since
ver2.0
See also
wcfFuncReject

◆ wcfFuncRespond()

wcfStatus wcfFuncRespond ( const wcfFuncCallHandle handle,
const wcfMultiVal value 
)

関数呼び出しに対して値を返す

Since
ver1.5

値を返すとhandleはdeleteされ使えなくなる

Parameters
handle関数呼び出しに対応するhandle
value返す値 (ver1.9〜 NULLも可)
Returns
handleが無効ならWCF_BAD_HANDLE

◆ wcfFuncRespondT()

template<typename CharT >
wcfStatus wcfFuncRespondT ( const typename CharType< CharT >::CHandle *  handle,
const typename CharType< CharT >::CVal *  value 
)

◆ wcfFuncRespondW()

wcfStatus wcfFuncRespondW ( const wcfFuncCallHandleW handle,
const wcfMultiValW value 
)

関数呼び出しに対して値を返す (wstring)

Since
ver2.0
See also
wcfFuncRespond

◆ wcfFuncRun()

wcfStatus wcfFuncRun ( wcfClient wcli,
const char *  member,
const char *  field,
const wcfMultiVal args,
int  arg_size,
wcfMultiVal **  result 
)

関数を呼び出す

Since
ver1.5
Parameters
wcliClientポインタ
membermemberの名前 (ver1.7〜:NULLまたは空文字列で自分自身を指す)
fieldfuncの名前
args引数の配列
arg_size引数の個数
result結果を格納する変数(wcfMultiVal*)へのポインタ (破棄するときには wcfDestroy() を使ってください)
Returns
wcliが無効ならWCF_BAD_WCLI, 対象のmemberやfieldが存在しない場合 WCF_NOT_FOUND, 関数で例外が発生した場合 WCF_EXCEPTION
Deprecated:
ver2.0〜 wcfFuncRunAsync()を推奨。 wcfFuncWaitResult() で同等のことができるが、 使い方によってはデッドロックを起こす可能性がある。

◆ wcfFuncRunAsync()

wcfStatus wcfFuncRunAsync ( wcfClient wcli,
const char *  member,
const char *  field,
const wcfMultiVal args,
int  arg_size,
wcfPromise **  async_res 
)

関数を非同期で呼び出す

Since
ver1.5
  • 戻り値やエラーは wcfFuncGetResult, wcfFuncWaitResult などを使って取得する
  • ver2.0〜: 戻り値が不要な場合は wcfDestroy で破棄してください。
  • ver2.0~: wcfFuncRunAsyncを呼んだ時点でclientがサーバーに接続していない場合、 関数呼び出しメッセージは送信されず呼び出しは失敗する (funcGetResult() でWCF_NOT_FOUNDになる)
Parameters
wcliClientポインタ
membermemberの名前 (ver1.7〜:NULLまたは空文字列で自分自身を指す)
fieldfuncの名前
args引数の配列
arg_size引数の個数
async_res結果を格納する変数(wcfPromise*)へのポインタ (破棄するときには wcfWaitResult() または wcfDestroy() を使ってください)
Returns
wcliが無効ならWCF_BAD_WCLI

◆ wcfFuncRunAsyncW()

wcfStatus wcfFuncRunAsyncW ( wcfClient wcli,
const wchar_t *  member,
const wchar_t *  field,
const wcfMultiValW args,
int  arg_size,
wcfPromise **  async_res 
)

関数を非同期で呼び出す (wstring)

Since
ver2.0
See also
wcfFuncRunAsync

◆ wcfFuncRunW()

wcfStatus wcfFuncRunW ( wcfClient wcli,
const wchar_t *  member,
const wchar_t *  field,
const wcfMultiValW args,
int  arg_size,
wcfMultiValW **  result 
)

関数を呼び出す (wstring)

Since
ver2.0
Deprecated:
ver2.0〜 wcfFuncRunAsyncW()を推奨。 wcfFuncWaitResultW() で同等のことができるが、 使い方によってはデッドロックを起こす可能性がある。
See also
wcfFuncRun

◆ wcfFuncSet()

wcfStatus wcfFuncSet ( wcfClient wcli,
const char *  field,
const wcfValType arg_types,
int  arg_size,
wcfValType  return_type,
wcfFuncCallback  callback,
void *  user_data 
)

関数を登録する

Since
ver1.9
  • 登録した関数は引数でcallhandleを受け取り、 wcfFuncRespond または wcfFuncReject を使って結果を返す。
  • ver1.11まで: 関数がrespondもrejectもせず終了した場合自動でrespondする。
  • ver2.0〜: 自動でrespondされることはないので、 関数が受け取ったhandleを別スレッドに渡すなどして、 ここでセットした関数の終了後にrespond()やreject()することも可能。
  • ver2.0〜: wcfFuncSet()でセットした場合、他クライアントから呼び出されたとき wcfRecv() (または autoRecv) のスレッドでそのまま実行され、 この関数が完了するまで他のデータの受信はブロックされる。 また、 wcfFuncRunAsync() で呼び出したとしても同じスレッドで同期実行される。
Parameters
wcliClientポインタ
field関数名
arg_types受け取る引数の型をwcfValTypeの配列で指定
arg_size受け取る引数の個数
return_type戻り値の型を指定
callback実行する関数: wcfFuncCallhandle* 型と void* 型の引数を1つずつ取り、何もreturnしない。
user_data関数に引数として渡す追加のデータ callbackが呼び出されるときに第2引数にそのまま渡される。
Returns
wcliが無効ならWCF_BAD_WCLI

◆ wcfFuncSetAsync()

wcfStatus wcfFuncSetAsync ( wcfClient wcli,
const char *  field,
const wcfValType arg_types,
int  arg_size,
wcfValType  return_type,
wcfFuncCallback  callback,
void *  user_data 
)

非同期に実行される関数を登録する

Since
ver2.0
  • 登録した関数は他クライアントから呼び出されたとき新しいスレッドを建てて実行される。 ver1.11以前のwcfFuncSet()と同じ。
See also
wcfFuncSet

◆ wcfFuncSetAsyncW()

wcfStatus wcfFuncSetAsyncW ( wcfClient wcli,
const wchar_t *  field,
const wcfValType arg_types,
int  arg_size,
wcfValType  return_type,
wcfFuncCallbackW  callback,
void *  user_data 
)

非同期に実行される関数を登録する (wstring)

Since
ver2.0
See also
wcfFuncSetW, wcfFuncSetAsync

◆ wcfFuncSetW()

wcfStatus wcfFuncSetW ( wcfClient wcli,
const wchar_t *  field,
const wcfValType arg_types,
int  arg_size,
wcfValType  return_type,
wcfFuncCallbackW  callback,
void *  user_data 
)

関数を登録する (wstring)

Since
ver2.0
See also
wcfFuncSet

◆ wcfFuncWaitResult()

wcfStatus wcfFuncWaitResult ( wcfPromise async_res,
wcfMultiVal **  result 
)

非同期で呼び出した関数の実行完了まで待機し、結果を取得

Since
ver1.5
  • ver2.0〜: wcfSync() を呼ぶのとは別のスレッドで使用することを想定している。 関数実行が完了したかどうかの情報の受信は wcfSync() で行われるため、 この関数を使用して待機している間に wcfSync() が呼ばれていないとデッドロックしてしまうので注意。
Parameters
async_res関数呼び出しに対応するPromise
result結果を格納する変数(wcfMultiVal*)へのポインタ (破棄するときには wcfDestroy() を使ってください)
Returns
async_resが無効な場合 WCF_BAD_HANDLE, 対象のmemberやfieldが存在しない場合 WCF_NOT_FOUND, 関数で例外が発生した場合 WCF_EXCEPTION (エラーメッセージがresultに入る)

◆ wcfValD()

wcfMultiVal wcfValD ( double  value)

double型のwcfMultiValを構築

Since
ver1.5

◆ wcfValI()

wcfMultiVal wcfValI ( int  value)

int型のwcfMultiValを構築

Since
ver1.5

◆ wcfValS()

wcfMultiVal wcfValS ( const char *  value)

文字列型のwcfMultiValを構築

Since
ver1.5

◆ wcfValWD()

wcfMultiValW wcfValWD ( double  value)

double型のwcfMultiValWを構築

Since
ver2.0

◆ wcfValWI()

wcfMultiValW wcfValWI ( int  value)

int型のwcfMultiValWを構築

Since
ver2.0

◆ wcfValWS()

wcfMultiValW wcfValWS ( const wchar_t *  value)

文字列型のwcfMultiValWを構築 (wstring)

Since
ver2.0