@yuneta/gobj-js 7.10.0 → 7.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gobj-js.cjs.js +139 -135
- package/dist/gobj-js.cjs.js.map +1 -1
- package/dist/gobj-js.cjs.min.js +16 -10
- package/dist/gobj-js.cjs.min.js.map +1 -1
- package/dist/gobj-js.es.js +139 -135
- package/dist/gobj-js.es.js.map +1 -1
- package/dist/gobj-js.es.min.js +16 -10
- package/dist/gobj-js.es.min.js.map +1 -1
- package/dist/gobj-js.iife.js +139 -135
- package/dist/gobj-js.iife.js.map +1 -1
- package/dist/gobj-js.iife.min.js +16 -10
- package/dist/gobj-js.iife.min.js.map +1 -1
- package/dist/gobj-js.umd.js +139 -135
- package/dist/gobj-js.umd.js.map +1 -1
- package/dist/gobj-js.umd.min.js +16 -10
- package/dist/gobj-js.umd.min.js.map +1 -1
- package/package.json +4 -4
package/dist/gobj-js.cjs.js
CHANGED
|
@@ -87,9 +87,7 @@ function sprintf_format(parse_tree, argv) {
|
|
|
87
87
|
case "x":
|
|
88
88
|
arg = (parseInt(arg, 10) >>> 0).toString(16);
|
|
89
89
|
break;
|
|
90
|
-
case "X":
|
|
91
|
-
arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase();
|
|
92
|
-
break;
|
|
90
|
+
case "X": arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase();
|
|
93
91
|
}
|
|
94
92
|
if (re.json.test(ph.type)) output += arg;
|
|
95
93
|
else {
|
|
@@ -777,9 +775,7 @@ function set_default(gobj, sdata, it) {
|
|
|
777
775
|
}
|
|
778
776
|
else jn_value = svalue;
|
|
779
777
|
break;
|
|
780
|
-
case data_type_t.DTP_POINTER:
|
|
781
|
-
jn_value = svalue;
|
|
782
|
-
break;
|
|
778
|
+
case data_type_t.DTP_POINTER: jn_value = svalue;
|
|
783
779
|
}
|
|
784
780
|
if (jn_value === void 0) {
|
|
785
781
|
log_error(`default_value WRONG, it: ${it.name}, value: ${it.default_value}`);
|
|
@@ -849,9 +845,7 @@ function json2item(gobj, sdata, it, jn_value_) {
|
|
|
849
845
|
return -1;
|
|
850
846
|
}
|
|
851
847
|
break;
|
|
852
|
-
case data_type_t.DTP_POINTER:
|
|
853
|
-
jn_value2 = jn_value_;
|
|
854
|
-
break;
|
|
848
|
+
case data_type_t.DTP_POINTER: jn_value2 = jn_value_;
|
|
855
849
|
}
|
|
856
850
|
if (jn_value2 === void 0) log_error(`${gobj_short_name(gobj)}: attr undefined: ${it.name}`);
|
|
857
851
|
sdata[it.name] = jn_value2;
|
|
@@ -1130,6 +1124,7 @@ function gclass_find_by_name(gclass_name, verbose) {
|
|
|
1130
1124
|
} catch (e) {}
|
|
1131
1125
|
if (!gclass) {
|
|
1132
1126
|
if (verbose) log_error(`gclass not found: ${gclass_name}`);
|
|
1127
|
+
return null;
|
|
1133
1128
|
}
|
|
1134
1129
|
return gclass;
|
|
1135
1130
|
}
|
|
@@ -1154,8 +1149,8 @@ function gobj_default_service() {
|
|
|
1154
1149
|
function gobj_find_service(service_name, verbose) {
|
|
1155
1150
|
service_name = service_name.toLowerCase();
|
|
1156
1151
|
let service_gobj = __jn_services__[service_name];
|
|
1157
|
-
if (!service_gobj
|
|
1158
|
-
log_error(`gobj service not found: ${service_name}`);
|
|
1152
|
+
if (!service_gobj) {
|
|
1153
|
+
if (verbose) log_error(`gobj service not found: ${service_name}`);
|
|
1159
1154
|
return null;
|
|
1160
1155
|
}
|
|
1161
1156
|
return service_gobj;
|
|
@@ -1571,12 +1566,14 @@ function gobj_play(gobj) {
|
|
|
1571
1566
|
log_error(`${gobj_short_name(gobj)}: GObj DISABLED`);
|
|
1572
1567
|
return -1;
|
|
1573
1568
|
}
|
|
1574
|
-
if (!gobj_is_running(gobj))
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1569
|
+
if (!gobj_is_running(gobj)) {
|
|
1570
|
+
if (!(gobj.gclass.gclass_flag & gclass_flag_t.gcflag_required_start_to_play)) {
|
|
1571
|
+
log_warning(`${gobj_short_name(gobj)}: GObj playing without previous start`);
|
|
1572
|
+
gobj_start(gobj);
|
|
1573
|
+
} else {
|
|
1574
|
+
log_error(`${gobj_short_name(gobj)}: Cannot play, start not done`);
|
|
1575
|
+
return -1;
|
|
1576
|
+
}
|
|
1580
1577
|
}
|
|
1581
1578
|
if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏯ ⏯ play: %s", gobj_full_name(gobj)));
|
|
1582
1579
|
gobj.playing = true;
|
|
@@ -2681,7 +2678,7 @@ function gobj_subscribe_event(publisher, event, kw, subscriber) {
|
|
|
2681
2678
|
log_error(`subscriber NULL: ev ${event}`);
|
|
2682
2679
|
return 0;
|
|
2683
2680
|
}
|
|
2684
|
-
const IGNORED_KEYS = new Set([
|
|
2681
|
+
const IGNORED_KEYS = /* @__PURE__ */ new Set([
|
|
2685
2682
|
"__config__",
|
|
2686
2683
|
"__global__",
|
|
2687
2684
|
"__local__",
|
|
@@ -2737,7 +2734,7 @@ function gobj_unsubscribe_event(publisher, event, kw, subscriber) {
|
|
|
2737
2734
|
log_error(`subscriber NULL: ev ${event}`);
|
|
2738
2735
|
return 0;
|
|
2739
2736
|
}
|
|
2740
|
-
const IGNORED_KEYS = new Set([
|
|
2737
|
+
const IGNORED_KEYS = /* @__PURE__ */ new Set([
|
|
2741
2738
|
"__config__",
|
|
2742
2739
|
"__global__",
|
|
2743
2740
|
"__local__",
|
|
@@ -2931,9 +2928,10 @@ function gobj_command(gobj, command, kw, src) {
|
|
|
2931
2928
|
if (tracea > 1) trace_json(kw);
|
|
2932
2929
|
}
|
|
2933
2930
|
if (gobj.gclass.gmt.mt_command_parser) return gobj.gclass.gmt.mt_command_parser(gobj, command, kw, src);
|
|
2934
|
-
if (gobj.gclass.command_table)
|
|
2935
|
-
|
|
2936
|
-
|
|
2931
|
+
if (gobj.gclass.command_table) {
|
|
2932
|
+
if (__global_command_parser_fn__) return __global_command_parser_fn__(gobj, command, kw, src);
|
|
2933
|
+
else return build_command_response(gobj, -1, sprintf("%s: global command parser not available", gobj_short_name(gobj)), 0, 0);
|
|
2934
|
+
} else return build_command_response(gobj, -1, sprintf("%s: command table not available", gobj_short_name(gobj)), 0, 0);
|
|
2937
2935
|
}
|
|
2938
2936
|
/************************************************************
|
|
2939
2937
|
* Exec gobj stats. Return a webix
|
|
@@ -3040,22 +3038,26 @@ function format_log(format) {
|
|
|
3040
3038
|
function log_error(format) {
|
|
3041
3039
|
let msg = format_log(format);
|
|
3042
3040
|
let hora = current_timestamp();
|
|
3043
|
-
if (f_error)
|
|
3044
|
-
if (
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3041
|
+
if (f_error) {
|
|
3042
|
+
if (f_error === _console.error) {
|
|
3043
|
+
if (__console_output_enabled__) f_error("%c" + hora + " ERROR: " + String(msg), "color:red");
|
|
3044
|
+
} else {
|
|
3045
|
+
if (__console_output_enabled__) _console.error("%c" + hora + " ERROR: " + String(msg), "color:red");
|
|
3046
|
+
f_error(`${hora} ERROR: ${String(msg)}`);
|
|
3047
|
+
}
|
|
3048
3048
|
}
|
|
3049
3049
|
emit_log_callback("error", msg, hora);
|
|
3050
3050
|
}
|
|
3051
3051
|
function log_warning(format) {
|
|
3052
3052
|
let msg = format_log(format);
|
|
3053
3053
|
let hora = current_timestamp();
|
|
3054
|
-
if (f_warning)
|
|
3055
|
-
if (
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3054
|
+
if (f_warning) {
|
|
3055
|
+
if (f_warning === _console.warn) {
|
|
3056
|
+
if (__console_output_enabled__) f_warning("%c" + hora + " WARNING: " + String(msg), "color:yellow");
|
|
3057
|
+
} else {
|
|
3058
|
+
if (__console_output_enabled__) _console.warn("%c" + hora + " WARNING: " + String(msg), "color:yellow");
|
|
3059
|
+
f_warning(`${hora} WARNING: ${String(msg)}`);
|
|
3060
|
+
}
|
|
3059
3061
|
}
|
|
3060
3062
|
emit_log_callback("warning", msg, hora);
|
|
3061
3063
|
}
|
|
@@ -4091,10 +4093,12 @@ function list2options(list, field_id, field_value) {
|
|
|
4091
4093
|
vv["id"] = field_id;
|
|
4092
4094
|
vv["value"] = v[field_id];
|
|
4093
4095
|
} else {
|
|
4094
|
-
if (!kw_has_key(v, field_value))
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4096
|
+
if (!kw_has_key(v, field_value)) {
|
|
4097
|
+
if (json_size(v) > 0) field_value = Object.keys(v)[0];
|
|
4098
|
+
else {
|
|
4099
|
+
log_error("list2options(): object without field value: " + field_value);
|
|
4100
|
+
continue;
|
|
4101
|
+
}
|
|
4098
4102
|
}
|
|
4099
4103
|
vv["id"] = v[field_id];
|
|
4100
4104
|
vv["value"] = v[field_value];
|
|
@@ -4410,13 +4414,15 @@ function jdb_update(jdb, topic_name, path, kw) {
|
|
|
4410
4414
|
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [], 1);
|
|
4411
4415
|
v = _jdb_get(v, null, id, false);
|
|
4412
4416
|
}
|
|
4413
|
-
if (ids.length === 0 && v)
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4417
|
+
if (ids.length === 0 && v) {
|
|
4418
|
+
if (is_array(v)) v.push(kw);
|
|
4419
|
+
else if (v["id"] === kw["id"]) Object.assign(v, kw);
|
|
4420
|
+
else {
|
|
4421
|
+
let v_ = kw_get_dict_value(null, v, jdb.hook, [], 1);
|
|
4422
|
+
let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
|
|
4423
|
+
if (v__) Object.assign(v__, kw);
|
|
4424
|
+
else v_.push(kw);
|
|
4425
|
+
}
|
|
4420
4426
|
}
|
|
4421
4427
|
return topic;
|
|
4422
4428
|
}
|
|
@@ -4442,13 +4448,15 @@ function jdb_delete(jdb, topic_name, path, kw) {
|
|
|
4442
4448
|
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, null, 0);
|
|
4443
4449
|
v = _jdb_get(v, null, id, false);
|
|
4444
4450
|
}
|
|
4445
|
-
if (ids.length === 0 && v)
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4451
|
+
if (ids.length === 0 && v) {
|
|
4452
|
+
if (is_array(v)) {
|
|
4453
|
+
let idx = id_index_in_obj_list(v, kw["id"]);
|
|
4454
|
+
if (idx >= 0) v.splice(idx, 1);
|
|
4455
|
+
} else {
|
|
4456
|
+
let v_ = kw_get_dict_value(null, v, jdb.hook, null, 0);
|
|
4457
|
+
let idx = id_index_in_obj_list(v_, kw["id"]);
|
|
4458
|
+
if (idx >= 0) v_.splice(idx, 1);
|
|
4459
|
+
}
|
|
4452
4460
|
}
|
|
4453
4461
|
return topic;
|
|
4454
4462
|
}
|
|
@@ -5175,41 +5183,42 @@ function treedb_hook_data_size(value) {
|
|
|
5175
5183
|
* }
|
|
5176
5184
|
************************************************************/
|
|
5177
5185
|
function treedb_decoder_fkey(col, fkey) {
|
|
5178
|
-
if (is_string(fkey))
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
|
|
5182
|
-
|
|
5183
|
-
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5188
|
-
|
|
5189
|
-
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5194
|
-
|
|
5195
|
-
|
|
5196
|
-
|
|
5197
|
-
|
|
5198
|
-
|
|
5199
|
-
|
|
5200
|
-
|
|
5201
|
-
|
|
5202
|
-
|
|
5203
|
-
|
|
5204
|
-
|
|
5186
|
+
if (is_string(fkey)) {
|
|
5187
|
+
if (fkey.indexOf("^") === -1) {
|
|
5188
|
+
let fkey_desc = col.fkey;
|
|
5189
|
+
if (json_object_size(fkey_desc) !== 1) {
|
|
5190
|
+
log_error("bad fkey 1");
|
|
5191
|
+
log_error(col);
|
|
5192
|
+
log_error(fkey);
|
|
5193
|
+
return null;
|
|
5194
|
+
}
|
|
5195
|
+
let topic_name;
|
|
5196
|
+
let hook_name;
|
|
5197
|
+
for (const k of Object.keys(fkey_desc)) {
|
|
5198
|
+
topic_name = k;
|
|
5199
|
+
hook_name = fkey_desc[k];
|
|
5200
|
+
break;
|
|
5201
|
+
}
|
|
5202
|
+
return {
|
|
5203
|
+
topic_name,
|
|
5204
|
+
id: fkey,
|
|
5205
|
+
hook_name
|
|
5206
|
+
};
|
|
5207
|
+
} else {
|
|
5208
|
+
let tt = fkey.split("^");
|
|
5209
|
+
if (tt.length !== 3) {
|
|
5210
|
+
log_error("bad fkey 2");
|
|
5211
|
+
log_error(col);
|
|
5212
|
+
log_error(fkey);
|
|
5213
|
+
return null;
|
|
5214
|
+
}
|
|
5215
|
+
return {
|
|
5216
|
+
topic_name: tt[0],
|
|
5217
|
+
id: tt[1],
|
|
5218
|
+
hook_name: tt[2]
|
|
5219
|
+
};
|
|
5205
5220
|
}
|
|
5206
|
-
|
|
5207
|
-
topic_name: tt[0],
|
|
5208
|
-
id: tt[1],
|
|
5209
|
-
hook_name: tt[2]
|
|
5210
|
-
};
|
|
5211
|
-
}
|
|
5212
|
-
else if (is_object(fkey)) return {
|
|
5221
|
+
} else if (is_object(fkey)) return {
|
|
5213
5222
|
topic_name: fkey.topic_name,
|
|
5214
5223
|
id: fkey.id,
|
|
5215
5224
|
hook_name: fkey.hook_name
|
|
@@ -5251,38 +5260,39 @@ function treedb_encoder_fkey(col, fkey) {
|
|
|
5251
5260
|
* }
|
|
5252
5261
|
********************************************/
|
|
5253
5262
|
function treedb_decoder_hook(col, hook) {
|
|
5254
|
-
if (is_string(hook))
|
|
5255
|
-
|
|
5256
|
-
|
|
5257
|
-
|
|
5258
|
-
|
|
5259
|
-
|
|
5260
|
-
|
|
5261
|
-
|
|
5262
|
-
|
|
5263
|
-
|
|
5264
|
-
|
|
5265
|
-
|
|
5266
|
-
|
|
5267
|
-
|
|
5268
|
-
|
|
5269
|
-
|
|
5270
|
-
|
|
5271
|
-
|
|
5272
|
-
|
|
5273
|
-
|
|
5274
|
-
|
|
5275
|
-
|
|
5276
|
-
|
|
5277
|
-
|
|
5278
|
-
|
|
5263
|
+
if (is_string(hook)) {
|
|
5264
|
+
if (hook.indexOf("^") === -1) {
|
|
5265
|
+
let hook_desc = col.hook;
|
|
5266
|
+
if (json_object_size(hook_desc) !== 1) {
|
|
5267
|
+
log_error("bad hook 1");
|
|
5268
|
+
log_error(col);
|
|
5269
|
+
log_error(hook);
|
|
5270
|
+
return null;
|
|
5271
|
+
}
|
|
5272
|
+
let topic_name;
|
|
5273
|
+
for (let k of Object.keys(hook_desc)) {
|
|
5274
|
+
topic_name = k;
|
|
5275
|
+
hook_desc[k];
|
|
5276
|
+
break;
|
|
5277
|
+
}
|
|
5278
|
+
return {
|
|
5279
|
+
topic_name,
|
|
5280
|
+
id: hook
|
|
5281
|
+
};
|
|
5282
|
+
} else {
|
|
5283
|
+
let tt = hook.split("^");
|
|
5284
|
+
if (tt.length !== 2) {
|
|
5285
|
+
log_error("bad hook 2");
|
|
5286
|
+
log_error(col);
|
|
5287
|
+
log_error(hook);
|
|
5288
|
+
return null;
|
|
5289
|
+
}
|
|
5290
|
+
return {
|
|
5291
|
+
topic_name: tt[0],
|
|
5292
|
+
id: tt[1]
|
|
5293
|
+
};
|
|
5279
5294
|
}
|
|
5280
|
-
|
|
5281
|
-
topic_name: tt[0],
|
|
5282
|
-
id: tt[1]
|
|
5283
|
-
};
|
|
5284
|
-
}
|
|
5285
|
-
else if (is_object(hook)) return {
|
|
5295
|
+
} else if (is_object(hook)) return {
|
|
5286
5296
|
topic_name: hook.topic_name,
|
|
5287
5297
|
id: hook.id
|
|
5288
5298
|
};
|
|
@@ -5343,6 +5353,7 @@ var treedb_field_types = [
|
|
|
5343
5353
|
"template",
|
|
5344
5354
|
"uuid",
|
|
5345
5355
|
"rowid",
|
|
5356
|
+
"qualified",
|
|
5346
5357
|
"password",
|
|
5347
5358
|
"email",
|
|
5348
5359
|
"url",
|
|
@@ -5388,9 +5399,7 @@ function treedb_get_field_desc(col) {
|
|
|
5388
5399
|
case "template":
|
|
5389
5400
|
field_desc.enum_list = col.template;
|
|
5390
5401
|
break;
|
|
5391
|
-
case "table":
|
|
5392
|
-
field_desc.enum_list = col.table;
|
|
5393
|
-
break;
|
|
5402
|
+
case "table": field_desc.enum_list = col.table;
|
|
5394
5403
|
}
|
|
5395
5404
|
field_desc.type = f;
|
|
5396
5405
|
} else if (str_in_list(treedb_field_attributes, f)) switch (f) {
|
|
@@ -5403,9 +5412,7 @@ function treedb_get_field_desc(col) {
|
|
|
5403
5412
|
case "required":
|
|
5404
5413
|
field_desc.is_required = true;
|
|
5405
5414
|
break;
|
|
5406
|
-
case "hidden":
|
|
5407
|
-
field_desc.is_hidden = true;
|
|
5408
|
-
break;
|
|
5415
|
+
case "hidden": field_desc.is_hidden = true;
|
|
5409
5416
|
}
|
|
5410
5417
|
}
|
|
5411
5418
|
return field_desc;
|
|
@@ -5442,9 +5449,7 @@ function template_get_field_desc(key, value) {
|
|
|
5442
5449
|
case "required":
|
|
5443
5450
|
field_desc.is_required = true;
|
|
5444
5451
|
break;
|
|
5445
|
-
case "hidden":
|
|
5446
|
-
field_desc.is_hidden = true;
|
|
5447
|
-
break;
|
|
5452
|
+
case "hidden": field_desc.is_hidden = true;
|
|
5448
5453
|
}
|
|
5449
5454
|
}
|
|
5450
5455
|
if (!field_desc.real_type) field_desc.real_type = "string";
|
|
@@ -5468,7 +5473,8 @@ function create_template_record(template, kw) {
|
|
|
5468
5473
|
Object.entries(template).forEach(([field, col]) => {
|
|
5469
5474
|
let default_value;
|
|
5470
5475
|
if (is_object(col)) default_value = col.default;
|
|
5471
|
-
|
|
5476
|
+
let value = kw_get_dict_value(null, kw, field, default_value);
|
|
5477
|
+
new_record[field] = value;
|
|
5472
5478
|
});
|
|
5473
5479
|
return new_record;
|
|
5474
5480
|
}
|
|
@@ -5549,7 +5555,6 @@ function mt_writing$2(gobj, path) {
|
|
|
5549
5555
|
if (priv.msec > 0) {
|
|
5550
5556
|
if (!gobj_is_running(gobj)) gobj_start(gobj);
|
|
5551
5557
|
} else if (gobj_is_running(gobj)) gobj_stop(gobj);
|
|
5552
|
-
break;
|
|
5553
5558
|
}
|
|
5554
5559
|
}
|
|
5555
5560
|
/***************************************************************
|
|
@@ -5908,9 +5913,7 @@ function mt_writing(gobj, path) {
|
|
|
5908
5913
|
case "remote_yuno_role":
|
|
5909
5914
|
priv.remote_yuno_role = gobj_read_str_attr(gobj, "remote_yuno_role");
|
|
5910
5915
|
break;
|
|
5911
|
-
case "remote_yuno_service":
|
|
5912
|
-
priv.remote_yuno_service = gobj_read_str_attr(gobj, "remote_yuno_service");
|
|
5913
|
-
break;
|
|
5916
|
+
case "remote_yuno_service": priv.remote_yuno_service = gobj_read_str_attr(gobj, "remote_yuno_service");
|
|
5914
5917
|
}
|
|
5915
5918
|
}
|
|
5916
5919
|
/***************************************************************
|
|
@@ -6452,12 +6455,13 @@ function ac_on_message(gobj, event, kw, src) {
|
|
|
6452
6455
|
return 0;
|
|
6453
6456
|
}
|
|
6454
6457
|
let gobj_service = gobj_find_service(iev_dst_service, true);
|
|
6455
|
-
if (gobj_service)
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
|
|
6459
|
-
|
|
6460
|
-
|
|
6458
|
+
if (gobj_service) {
|
|
6459
|
+
if (gobj_has_event(gobj_service, iev_event, event_flag_t.EVF_PUBLIC_EVENT)) gobj_send_event(gobj_service, iev_event, iev_kw, gobj);
|
|
6460
|
+
else {
|
|
6461
|
+
log_error(`${gobj_short_name(gobj)}: Service found but no event or not public, service '${gobj_short_name(gobj_service)}', ev '${iev_event}'`);
|
|
6462
|
+
return -1;
|
|
6463
|
+
}
|
|
6464
|
+
} else if (gobj_is_pure_child(gobj)) gobj_send_event(gobj_parent(gobj), iev_event, iev_kw, gobj);
|
|
6461
6465
|
else gobj_publish_event(gobj, iev_event, iev_kw);
|
|
6462
6466
|
return 0;
|
|
6463
6467
|
}
|