@@ -201,6 +201,36 @@ type uv_async_t = {
201
201
a12 : * u8
202
202
} ;
203
203
204
+ // 64bit unix size: 128
205
+ // 32bit unix size: ?
206
+ #[ cfg( target_os = "linux" ) ]
207
+ #[ cfg( target_os = "macos" ) ]
208
+ #[ cfg( target_os = "freebsd" ) ]
209
+ type uv_timer_t = {
210
+ fields : uv_handle_fields ,
211
+ a00 : * u8 , a01 : * u8 , a02 : * u8 , a03 : * u8 ,
212
+ a04 : * u8 , a05 : * u8 , a06 : * u8 , a07 : * u8 ,
213
+ a08 : * u8 , a09 : * u8 ,
214
+ a11 : uv_timer_t_32bit_unix_riders
215
+ } ;
216
+ #[ cfg( target_arch="x86_64" ) ]
217
+ type uv_timer_t_32bit_unix_riders = {
218
+ a10 : * u8 , a11 : * u8
219
+ } ;
220
+ #[ cfg( target_arch="x86" ) ]
221
+ type uv_timer_t_32bit_unix_riders = {
222
+ a10 : * u8 , a11 : * u8 , a12 : * u8 , a13 : * u8
223
+ } ;
224
+ // win32 size: ?
225
+ #[ cfg( target_os = "win32" ) ]
226
+ type uv_timer_t = {
227
+ fields : uv_handle_fields ,
228
+ a00 : * u8 , a01 : * u8 , a02 : * u8 , a03 : * u8 ,
229
+ a04 : * u8 , a05 : * u8 , a06 : * u8 , a07 : * u8 ,
230
+ a08 : * u8 , a09 : * u8 , a10 : * u8 , a11 : * u8 ,
231
+ a12 : * u8
232
+ } ;
233
+
204
234
// unix size: 16
205
235
#[ cfg( target_os = "linux" ) ]
206
236
#[ cfg( target_os = "macos" ) ]
@@ -379,6 +409,57 @@ mod uv_ll_struct_stubgen {
379
409
#[ cfg( target_os = "linux" ) ]
380
410
#[ cfg( target_os = "macos" ) ]
381
411
#[ cfg( target_os = "freebsd" ) ]
412
+ fn gen_stub_uv_timer_t ( ) -> uv_timer_t {
413
+ ret gen_stub_arch ( ) ;
414
+ #[ cfg( target_arch = "x86_64" ) ]
415
+ fn gen_stub_arch ( ) -> uv_timer_t {
416
+ ret { fields : { loop_handle: ptr:: null ( ) , type_ : 0u32 ,
417
+ close_cb : ptr:: null ( ) ,
418
+ mut data : ptr:: null ( ) } ,
419
+ a00: 0 as * u8, a01 : 0 as * u8, a02 : 0 as * u8,
420
+ a03 : 0 as * u8,
421
+ a04 : 0 as * u8, a05 : 0 as * u8, a06 : 0 as * u8,
422
+ a07 : 0 as * u8,
423
+ a08 : 0 as * u8, a09 : 0 as * u8,
424
+ a11: {
425
+ a10 : 0 as * u8, a11 : 0 as * u8
426
+ }
427
+ } ;
428
+ }
429
+ #[ cfg( target_arch = "x86" ) ]
430
+ fn gen_stub_arch ( ) -> uv_timer_t {
431
+ ret { fields : { loop_handle: ptr:: null ( ) , type_ : 0u32 ,
432
+ close_cb : ptr:: null ( ) ,
433
+ mut data : ptr:: null ( ) } ,
434
+ a00: 0 as * u8, a01 : 0 as * u8, a02 : 0 as * u8,
435
+ a03 : 0 as * u8,
436
+ a04 : 0 as * u8, a05 : 0 as * u8, a06 : 0 as * u8,
437
+ a07 : 0 as * u8,
438
+ a08 : 0 as * u8, a09 : 0 as * u8,
439
+ a11: {
440
+ a10 : 0 as * u8, a11 : 0 as * u8,
441
+ a12 : 0 as * u8, a13 : 0 as * u8
442
+ }
443
+ } ;
444
+ }
445
+ }
446
+ #[ cfg( target_os = "win32" ) ]
447
+ fn gen_stub_uv_timer_t ( ) -> uv_timer_t {
448
+ ret { fields : { loop_handle: ptr:: null ( ) , type_ : 0u32 ,
449
+ close_cb : ptr:: null ( ) ,
450
+ mut data : ptr:: null ( ) } ,
451
+ a00: 0 as * u8, a01 : 0 as * u8, a02 : 0 as * u8,
452
+ a03 : 0 as * u8,
453
+ a04 : 0 as * u8, a05 : 0 as * u8, a06 : 0 as * u8,
454
+ a07 : 0 as * u8,
455
+ a08 : 0 as * u8, a09 : 0 as * u8, a10 : 0 as * u8,
456
+ a11 : 0 as * u8,
457
+ a12 : 0 as * u8
458
+ } ;
459
+ }
460
+ #[ cfg( target_os = "linux" ) ]
461
+ #[ cfg( target_os = "macos" ) ]
462
+ #[ cfg( target_os = "freebsd" ) ]
382
463
fn gen_stub_uv_write_t ( ) -> uv_write_t {
383
464
ret gen_stub_arch ( ) ;
384
465
#[ cfg( target_arch="x86_64" ) ]
@@ -467,10 +548,18 @@ native mod rustrt {
467
548
fn rust_uv_read_start ( stream : * libc:: c_void , on_alloc : * u8 ,
468
549
on_read : * u8 ) -> libc:: c_int ;
469
550
fn rust_uv_read_stop ( stream : * libc:: c_void ) -> libc:: c_int ;
551
+ fn rust_uv_timer_init ( loop_handle : * libc:: c_void ,
552
+ timer_handle : * uv_timer_t ) -> libc:: c_int ;
553
+ fn rust_uv_timer_start (
554
+ timer_handle : * uv_timer_t ,
555
+ cb : * u8 ,
556
+ timeout : libc:: c_uint ,
557
+ repeat : libc:: c_uint ) -> libc:: c_int ;
558
+ fn rust_uv_timer_stop ( handle : * uv_timer_t ) -> libc:: c_int ;
559
+
560
+ // data accessors/helpers for rust-mapped uv structs
470
561
fn rust_uv_malloc_buf_base_of ( sug_size : libc:: size_t ) -> * u8 ;
471
562
fn rust_uv_free_base_of_buf ( ++buf : uv_buf_t ) ;
472
-
473
- // data accessors for rust-mapped uv structs
474
563
fn rust_uv_get_stream_handle_from_connect_req (
475
564
connect_req : * uv_connect_t )
476
565
-> * uv_stream_t ;
@@ -577,6 +666,50 @@ unsafe fn async_init(loop_handle: *libc::c_void,
577
666
unsafe fn async_send ( async_handle : * uv_async_t ) {
578
667
ret rustrt:: rust_uv_async_send ( async_handle) ;
579
668
}
669
+ unsafe fn buf_init ( ++input : * u8 , len : uint ) -> uv_buf_t {
670
+ let out_buf = { base: ptr:: null ( ) , len: 0 as libc:: size_t } ;
671
+ let out_buf_ptr = ptr:: addr_of ( out_buf) ;
672
+ log ( debug, #fmt ( "ll::buf_init - input %u len %u out_buf: %u" ,
673
+ input as uint ,
674
+ len as uint ,
675
+ out_buf_ptr as uint ) ) ;
676
+ // yuck :/
677
+ rustrt:: rust_uv_buf_init ( out_buf_ptr, input, len) ;
678
+ //let result = rustrt::rust_uv_buf_init_2(input, len);
679
+ log ( debug, "after rust_uv_buf_init" ) ;
680
+ let res_base = get_base_from_buf ( out_buf) ;
681
+ let res_len = get_len_from_buf ( out_buf) ;
682
+ //let res_base = get_base_from_buf(result);
683
+ log ( debug, #fmt ( "ll::buf_init - result %u len %u" ,
684
+ res_base as uint ,
685
+ res_len as uint ) ) ;
686
+ ret out_buf;
687
+ //ret result;
688
+ }
689
+ unsafe fn ip4_addr ( ip : str , port : int )
690
+ -> sockaddr_in {
691
+ let mut addr_vec = str:: bytes ( ip) ;
692
+ addr_vec += [ 0u8 ] ; // add null terminator
693
+ let addr_vec_ptr = vec:: unsafe:: to_ptr ( addr_vec) ;
694
+ let ip_back = str:: from_bytes ( addr_vec) ;
695
+ log ( debug, #fmt ( "vec val: '%s' length: %u" ,
696
+ ip_back, vec:: len ( addr_vec) ) ) ;
697
+ ret rustrt:: rust_uv_ip4_addr ( addr_vec_ptr,
698
+ port as libc:: c_int ) ;
699
+ }
700
+
701
+ unsafe fn timer_init ( loop_ptr : * libc:: c_void ,
702
+ timer_ptr : * uv_timer_t ) -> libc:: c_int {
703
+ ret rustrt:: rust_uv_timer_init ( loop_ptr, timer_ptr) ;
704
+ }
705
+ unsafe fn timer_start ( timer_ptr : * uv_timer_t , cb : * u8 , timeout : uint ,
706
+ repeat : uint ) -> libc:: c_int {
707
+ ret rustrt:: rust_uv_timer_start ( timer_ptr, cb, timeout as libc:: c_uint ,
708
+ repeat as libc:: c_uint ) ;
709
+ }
710
+ unsafe fn timer_stop ( timer_ptr : * uv_timer_t ) -> libc:: c_int {
711
+ ret rustrt:: rust_uv_timer_stop ( timer_ptr) ;
712
+ }
580
713
581
714
// libuv struct initializers
582
715
unsafe fn tcp_t ( ) -> uv_tcp_t {
@@ -591,6 +724,11 @@ unsafe fn write_t() -> uv_write_t {
591
724
unsafe fn async_t ( ) -> uv_async_t {
592
725
ret uv_ll_struct_stubgen:: gen_stub_uv_async_t ( ) ;
593
726
}
727
+ unsafe fn timer_t ( ) -> uv_timer_t {
728
+ ret uv_ll_struct_stubgen:: gen_stub_uv_timer_t ( ) ;
729
+ }
730
+
731
+ // data access helpers
594
732
unsafe fn get_loop_for_uv_handle ( handle : * libc:: c_void )
595
733
-> * libc:: c_void {
596
734
ret rustrt:: rust_uv_get_loop_for_uv_handle ( handle) ;
@@ -627,37 +765,6 @@ unsafe fn get_base_from_buf(buf: uv_buf_t) -> *u8 {
627
765
unsafe fn get_len_from_buf ( buf : uv_buf_t ) -> libc:: size_t {
628
766
ret rustrt:: rust_uv_get_len_from_buf ( buf) ;
629
767
}
630
- unsafe fn buf_init ( ++input : * u8 , len : uint ) -> uv_buf_t {
631
- let out_buf = { base: ptr:: null ( ) , len: 0 as libc:: size_t } ;
632
- let out_buf_ptr = ptr:: addr_of ( out_buf) ;
633
- log ( debug, #fmt ( "ll::buf_init - input %u len %u out_buf: %u" ,
634
- input as uint ,
635
- len as uint ,
636
- out_buf_ptr as uint ) ) ;
637
- // yuck :/
638
- rustrt:: rust_uv_buf_init ( out_buf_ptr, input, len) ;
639
- //let result = rustrt::rust_uv_buf_init_2(input, len);
640
- log ( debug, "after rust_uv_buf_init" ) ;
641
- let res_base = get_base_from_buf ( out_buf) ;
642
- let res_len = get_len_from_buf ( out_buf) ;
643
- //let res_base = get_base_from_buf(result);
644
- log ( debug, #fmt ( "ll::buf_init - result %u len %u" ,
645
- res_base as uint ,
646
- res_len as uint ) ) ;
647
- ret out_buf;
648
- //ret result;
649
- }
650
- unsafe fn ip4_addr ( ip : str , port : int )
651
- -> sockaddr_in {
652
- let mut addr_vec = str:: bytes ( ip) ;
653
- addr_vec += [ 0u8 ] ; // add null terminator
654
- let addr_vec_ptr = vec:: unsafe:: to_ptr ( addr_vec) ;
655
- let ip_back = str:: from_bytes ( addr_vec) ;
656
- log ( debug, #fmt ( "vec val: '%s' length: %u" ,
657
- ip_back, vec:: len ( addr_vec) ) ) ;
658
- ret rustrt:: rust_uv_ip4_addr ( addr_vec_ptr,
659
- port as libc:: c_int ) ;
660
- }
661
768
unsafe fn malloc_buf_base_of ( suggested_size : libc:: size_t )
662
769
-> * u8 {
663
770
ret rustrt:: rust_uv_malloc_buf_base_of ( suggested_size) ;
0 commit comments