WebCFace 2.5.2
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
c_wcf_internal.h
Go to the documentation of this file.
1#pragma once
2#include <algorithm>
3#include <vector>
4#include "webcface/wcf.h"
5#include "webcface/client.h"
6#include "webcface/func.h"
9
11inline namespace c_wcf {
12template <typename CharT>
13inline std::basic_string<CharT> strOrEmpty(const CharT *p) {
14 if (p) {
15 return p;
16 } else {
17 return std::basic_string<CharT>();
18 }
19}
20
27inline std::unordered_map<const wcfFuncCallHandle *, FuncCallHandle>
29inline std::unordered_map<const wcfFuncCallHandleW *, FuncCallHandle>
31
38inline std::unordered_map<const wcfMultiVal *, ValAdaptor> func_val_list;
39inline std::unordered_map<const wcfMultiValW *, ValAdaptor> func_val_list_w;
40
44inline std::unordered_map<const wcfViewComponent *,
45 const std::vector<ViewComponent>>
47inline std::unordered_map<const wcfViewComponentW *,
48 const std::vector<ViewComponent>>
50
51template <typename CharT>
52struct CharType {};
53template <>
54struct CharType<char> {
61 static constexpr auto &fetchedHandles() { return fetched_handles; }
62 static constexpr auto &funcValList() { return func_val_list; }
63 static constexpr auto &viewList() { return view_list; }
64};
65template <>
66struct CharType<wchar_t> {
73 static constexpr auto &fetchedHandles() { return fetched_handles_w; }
74 static constexpr auto &funcValList() { return func_val_list_w; }
75 static constexpr auto &viewList() { return view_list_w; }
76};
77
84inline std::vector<wcfClient *> wcli_list;
85
92inline std::vector<Promise *> func_result_list;
93
101inline Client *getWcli(wcfClient *wcli) {
102 if (std::find(wcli_list.begin(), wcli_list.end(), wcli) ==
103 wcli_list.end()) {
104 return nullptr;
105 }
106 return static_cast<Client *>(wcli);
107}
108
110 if (std::find(func_result_list.begin(), func_result_list.end(), res) ==
111 func_result_list.end()) {
112 return nullptr;
113 }
114 return static_cast<Promise *>(res);
115}
116
117template <typename MultiVal>
118ValAdaptor fromCVal(const MultiVal &val) {
119 if (val.as_str != nullptr) {
120 return ValAdaptor(val.as_str);
121 } else if (val.as_double != 0) {
122 return ValAdaptor(val.as_double);
123 } else {
124 return ValAdaptor(val.as_int);
125 }
126}
127template <typename CharT>
128std::vector<ValAdaptor> argsFromCVal(const typename CharType<CharT>::CVal *args,
129 int arg_size) {
130 std::vector<ValAdaptor> args_v;
131 args_v.reserve(arg_size);
132 for (int i = 0; i < arg_size; i++) {
133 args_v.emplace_back(fromCVal(args[i]));
134 }
135 return args_v;
136}
137
138template <typename CharT>
139auto resultToCVal(const ValAdaptor &result_val) {
140 auto result = new typename CharType<CharT>::CVal();
141 CharType<CharT>::funcValList().emplace(result, result_val);
142 const ValAdaptor &result_val_ref =
143 CharType<CharT>::funcValList().at(result);
144 result->as_int = result_val_ref;
145 result->as_double = result_val_ref;
146 result->as_str = result_val_ref;
147 return result;
148}
149
150} // namespace c_wcf
152
153using namespace webcface;
サーバーに接続するクライアント。
Definition client.h:18
非同期で実行した関数の実行結果を取得するインタフェース。
Definition func_result.h:50
数値、文字列などの値を相互変換するクラス
Definition val_adaptor.h:87
void wcfClient
Definition def_types.h:14
void(* wcfEventCallback1W)(const wchar_t *member, void *user_data)
イベントに登録する、引数1つ(+voidポインタ)を取るコールバックの型 (wstring)
Definition def_types.h:171
void(* wcfEventCallback2)(const char *member, const char *field, void *user_data)
イベントに登録する、引数2つ(+voidポインタ)を取るコールバックの型
Definition def_types.h:177
void(* wcfFuncCallbackW)(wcfFuncCallHandleW *call_handle, void *user_data)
funcにsetするコールバックの型 (wstring)
Definition def_types.h:158
void(* wcfEventCallback2W)(const wchar_t *member, const wchar_t *field, void *user_data)
イベントに登録する、引数2つ(+voidポインタ)を取るコールバックの型 (wstring)
Definition def_types.h:185
void(* wcfFuncCallback)(wcfFuncCallHandle *call_handle, void *user_data)
funcにsetするコールバックの型
Definition def_types.h:152
void(* wcfEventCallback1)(const char *member, void *user_data)
イベントに登録する、引数1つ(+voidポインタ)を取るコールバックの型
Definition def_types.h:164
void wcfPromise
Definition def_types.h:15
std::vector< wcfClient * > wcli_list
wcfInitで作られたクライアントのリスト
Definition c_wcf_internal.h:84
Promise * getPromise(wcfPromise *res)
Definition c_wcf_internal.h:109
std::unordered_map< const wcfViewComponentW *, const std::vector< ViewComponent > > view_list_w
Definition c_wcf_internal.h:49
std::vector< Promise * > func_result_list
wcfFuncRunAsyncで取得されたwcfPromiseのリスト
Definition c_wcf_internal.h:92
std::unordered_map< const wcfFuncCallHandleW *, FuncCallHandle > fetched_handles_w
Definition c_wcf_internal.h:30
std::vector< ValAdaptor > argsFromCVal(const typename CharType< CharT >::CVal *args, int arg_size)
Definition c_wcf_internal.h:128
ValAdaptor fromCVal(const MultiVal &val)
Definition c_wcf_internal.h:118
std::unordered_map< const wcfMultiVal *, ValAdaptor > func_val_list
wcfFuncRun, wcfFuncGetResultで取得されたwcfMultiValとValAdaptorのリスト
Definition c_wcf_internal.h:38
Client * getWcli(wcfClient *wcli)
voidポインタからclientオブジェクトを復元
Definition c_wcf_internal.h:101
std::basic_string< CharT > strOrEmpty(const CharT *p)
Definition c_wcf_internal.h:13
std::unordered_map< const wcfFuncCallHandle *, FuncCallHandle > fetched_handles
wcfFuncFetchCallで取得されたwcfFuncCallHandleのリスト
Definition c_wcf_internal.h:28
std::unordered_map< const wcfViewComponent *, const std::vector< ViewComponent > > view_list
wcfViewGetで取得されたwcfViewComponentとViewComponentBase
Definition c_wcf_internal.h:46
std::unordered_map< const wcfMultiValW *, ValAdaptor > func_val_list_w
Definition c_wcf_internal.h:39
auto resultToCVal(const ValAdaptor &result_val)
Definition c_wcf_internal.h:139
Definition arg.h:14
受信した関数呼び出しの情報を保持するstruct (wstring)
Definition def_types.h:131
受信した関数呼び出しの情報を保持するstruct
Definition def_types.h:111
数値と文字列をまとめて扱うためのstruct (wstring)
Definition def_types.h:84
数値と文字列をまとめて扱うためのstruct
Definition def_types.h:50
Viewの要素を表すstruct (wstring)
Definition def_types.h:289
Viewの要素を表すstruct.
Definition def_types.h:218
static constexpr auto & viewList()
Definition c_wcf_internal.h:63
wcfFuncCallback CCallback
Definition c_wcf_internal.h:57
wcfEventCallback2 CEventCallback2
Definition c_wcf_internal.h:59
static constexpr auto & funcValList()
Definition c_wcf_internal.h:62
static constexpr auto & fetchedHandles()
Definition c_wcf_internal.h:61
wcfEventCallback1 CEventCallback1
Definition c_wcf_internal.h:58
static constexpr auto & viewList()
Definition c_wcf_internal.h:75
static constexpr auto & funcValList()
Definition c_wcf_internal.h:74
wcfEventCallback1W CEventCallback1
Definition c_wcf_internal.h:70
static constexpr auto & fetchedHandles()
Definition c_wcf_internal.h:73
wcfFuncCallbackW CCallback
Definition c_wcf_internal.h:69
wcfEventCallback2W CEventCallback2
Definition c_wcf_internal.h:71
Definition c_wcf_internal.h:52
#define WEBCFACE_NS_END
Definition webcface-config.h:104
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:103