18
18
* Github: https://github.com/mikecovlee
19
19
*/
20
20
#include < network/network.hpp>
21
- #include < covscript/cni.hpp>
22
21
#include < covscript/extension.hpp>
23
22
#include < memory>
24
23
25
24
namespace network_cs_ext {
26
25
using namespace cs ;
27
- static extension network_ext;
28
- static extension_t network_ext_shared = make_shared_namespace(network_ext);
29
26
30
27
string host_name ()
31
28
{
32
29
return asio::ip::host_name ();
33
30
}
34
31
35
32
namespace tcp {
36
- static extension tcp_ext;
37
- static extension_t tcp_ext_shared = make_shared_namespace(tcp_ext);
33
+ static namespace_t tcp_ext = make_shared_namespace<name_space>();
38
34
using socket_t =std::shared_ptr<cs_impl::network::tcp::socket>;
39
35
using acceptor_t =std::shared_ptr<asio::ip::tcp::acceptor>;
40
36
using endpoint_t =asio::ip::tcp::endpoint;
@@ -85,8 +81,7 @@ namespace network_cs_ext {
85
81
}
86
82
87
83
namespace socket {
88
- static extension socket_ext;
89
- static extension_t socket_ext_shared = make_shared_namespace(socket_ext);
84
+ static namespace_t socket_ext = make_shared_namespace<name_space>();
90
85
91
86
var socket ()
92
87
{
@@ -164,8 +159,7 @@ namespace network_cs_ext {
164
159
}
165
160
166
161
namespace ep {
167
- static extension ep_ext;
168
- static extension_t ep_ext_shared = make_shared_namespace(ep_ext);
162
+ static namespace_t ep_ext = make_shared_namespace<name_space>();
169
163
170
164
string address (const endpoint_t & ep)
171
165
{
@@ -180,8 +174,7 @@ namespace network_cs_ext {
180
174
}
181
175
182
176
namespace udp {
183
- static extension udp_ext;
184
- static extension_t udp_ext_shared = make_shared_namespace(udp_ext);
177
+ static namespace_t udp_ext=make_shared_namespace<name_space>();
185
178
using socket_t =std::shared_ptr<cs_impl::network::udp::socket>;
186
179
using endpoint_t =asio::ip::udp::endpoint;
187
180
@@ -220,8 +213,7 @@ namespace network_cs_ext {
220
213
}
221
214
222
215
namespace socket {
223
- static extension socket_ext;
224
- static extension_t socket_ext_shared = make_shared_namespace(socket_ext);
216
+ static namespace_t socket_ext=make_shared_namespace<name_space>();
225
217
226
218
var socket ()
227
219
{
@@ -299,8 +291,7 @@ namespace network_cs_ext {
299
291
}
300
292
301
293
namespace ep {
302
- static extension ep_ext;
303
- static extension_t ep_ext_shared = make_shared_namespace(ep_ext);
294
+ static namespace_t ep_ext=make_shared_namespace<name_space>();
304
295
305
296
string address (const endpoint_t & ep)
306
297
{
@@ -314,71 +305,72 @@ namespace network_cs_ext {
314
305
}
315
306
}
316
307
317
- void init ()
308
+ void init (name_space& network_ext )
318
309
{
319
- network_ext.add_var (" tcp" , var::make_protect<extension_t >(tcp::tcp_ext_shared));
320
- network_ext.add_var (" udp" , var::make_protect<extension_t >(udp::udp_ext_shared));
321
- network_ext.add_var (" host_name" , make_cni (host_name, true ));
322
- tcp::tcp_ext
323
- .add_var (" socket" , var::make_constant<type>(tcp::socket::socket, type_id (typeid (tcp::socket_t )), tcp::socket::socket_ext_shared))
310
+ network_ext
311
+ .add_var (" tcp" , make_namespace (tcp::tcp_ext))
312
+ .add_var (" udp" , make_namespace (udp::udp_ext))
313
+ .add_var (" host_name" , make_cni (host_name, true ));
314
+ (*tcp::tcp_ext)
315
+ .add_var (" socket" , var::make_constant<type>(tcp::socket::socket, type_id (typeid (tcp::socket_t )), tcp::socket::socket_ext))
324
316
.add_var (" acceptor" , make_cni (tcp::acceptor, true ))
325
317
.add_var (" endpoint" , make_cni (tcp::endpoint, true ))
326
318
.add_var (" endpoint_v4" , make_cni (tcp::endpoint_v4, true ))
327
319
.add_var (" endpoint_v6" , make_cni (tcp::endpoint_v6, true ))
328
320
.add_var (" resolve" , make_cni (tcp::resolve, true ));
329
- tcp::socket::socket_ext
321
+ (* tcp::socket::socket_ext)
330
322
.add_var (" connect" , make_cni (tcp::socket::connect))
331
323
.add_var (" accept" , make_cni (tcp::socket::accept))
332
324
.add_var (" close" , make_cni (tcp::socket::close))
333
325
.add_var (" is_open" , make_cni (tcp::socket::is_open))
334
326
.add_var (" receive" , make_cni (tcp::socket::receive))
335
327
.add_var (" send" , make_cni (tcp::socket::send))
336
328
.add_var (" remote_endpoint" , make_cni (tcp::socket::remote_endpoint));
337
- tcp::ep::ep_ext
329
+ (* tcp::ep::ep_ext)
338
330
.add_var (" address" , make_cni (tcp::ep::address, true ))
339
331
.add_var (" port" , make_cni (tcp::ep::port, true ));
340
- udp::udp_ext
341
- .add_var (" socket" , var::make_constant<type>(udp::socket::socket, type_id (typeid (udp::socket_t )), udp::socket::socket_ext_shared ))
332
+ (* udp::udp_ext)
333
+ .add_var (" socket" , var::make_constant<type>(udp::socket::socket, type_id (typeid (udp::socket_t )), udp::socket::socket_ext ))
342
334
.add_var (" endpoint" , make_cni (udp::endpoint, true ))
343
335
.add_var (" endpoint_v4" , make_cni (udp::endpoint_v4, true ))
344
336
.add_var (" endpoint_v6" , make_cni (udp::endpoint_v6, true ))
345
337
.add_var (" resolve" , make_cni (udp::resolve, true ));
346
- udp::socket::socket_ext
338
+ (* udp::socket::socket_ext)
347
339
.add_var (" open_v4" , make_cni (udp::socket::open_v4))
348
340
.add_var (" open_v6" , make_cni (udp::socket::open_v6))
349
341
.add_var (" bind" , make_cni (udp::socket::bind))
350
342
.add_var (" close" , make_cni (udp::socket::close))
351
343
.add_var (" is_open" , make_cni (udp::socket::is_open))
352
344
.add_var (" receive_from" , make_cni (udp::socket::receive_from))
353
345
.add_var (" send_to" , make_cni (udp::socket::send_to));
354
- udp::ep::ep_ext
346
+ (* udp::ep::ep_ext)
355
347
.add_var (" address" , make_cni (udp::ep::address, true ))
356
348
.add_var (" port" , make_cni (udp::ep::port, true ));
357
349
}
358
350
}
359
351
namespace cs_impl {
360
352
template <>
361
- cs::extension_t &get_ext<network_cs_ext::tcp::socket_t >()
353
+ cs::namespace_t &get_ext<network_cs_ext::tcp::socket_t >()
362
354
{
363
- return network_cs_ext::tcp::socket::socket_ext_shared ;
355
+ return network_cs_ext::tcp::socket::socket_ext ;
364
356
}
365
357
366
358
template <>
367
- cs::extension_t &get_ext<network_cs_ext::tcp::endpoint_t >()
359
+ cs::namespace_t &get_ext<network_cs_ext::tcp::endpoint_t >()
368
360
{
369
- return network_cs_ext::tcp::ep::ep_ext_shared ;
361
+ return network_cs_ext::tcp::ep::ep_ext ;
370
362
}
371
363
372
364
template <>
373
- cs::extension_t &get_ext<network_cs_ext::udp::socket_t >()
365
+ cs::namespace_t &get_ext<network_cs_ext::udp::socket_t >()
374
366
{
375
- return network_cs_ext::udp::socket::socket_ext_shared ;
367
+ return network_cs_ext::udp::socket::socket_ext ;
376
368
}
377
369
378
370
template <>
379
- cs::extension_t &get_ext<network_cs_ext::udp::endpoint_t >()
371
+ cs::namespace_t &get_ext<network_cs_ext::udp::endpoint_t >()
380
372
{
381
- return network_cs_ext::udp::ep::ep_ext_shared ;
373
+ return network_cs_ext::udp::ep::ep_ext ;
382
374
}
383
375
384
376
template <>
@@ -412,8 +404,7 @@ namespace cs_impl {
412
404
}
413
405
}
414
406
415
- cs::extension * cs_extension ( )
407
+ void cs_extension_main ( cs::name_space& ns )
416
408
{
417
- network_cs_ext::init ();
418
- return &network_cs_ext::network_ext;
409
+ network_cs_ext::init (ns);
419
410
}
0 commit comments