@@ -31,55 +31,41 @@ pub fn log(level: LogLevel, message: &str) -> Result<(), Status> {
3131}
3232
3333extern "C" {
34- fn proxy_get_current_time_nanoseconds ( return_time : * mut u64 ) -> Status ;
34+ fn proxy_get_log_level ( return_level : * mut LogLevel ) -> Status ;
3535}
3636
37- pub fn get_current_time ( ) -> Result < SystemTime , Status > {
38- let mut return_time : u64 = 0 ;
37+ pub fn get_log_level ( ) -> Result < LogLevel , Status > {
38+ let mut return_level : LogLevel = LogLevel :: Trace ;
3939 unsafe {
40- match proxy_get_current_time_nanoseconds ( & mut return_time ) {
41- Status :: Ok => Ok ( UNIX_EPOCH + Duration :: from_nanos ( return_time ) ) ,
40+ match proxy_get_log_level ( & mut return_level ) {
41+ Status :: Ok => Ok ( return_level ) ,
4242 status => panic ! ( "unexpected status: {}" , status as u32 ) ,
4343 }
4444 }
4545}
4646
4747extern "C" {
48- fn proxy_set_tick_period_milliseconds ( period : u32 ) -> Status ;
48+ fn proxy_get_current_time_nanoseconds ( return_time : * mut u64 ) -> Status ;
4949}
5050
51- pub fn set_tick_period ( period : Duration ) -> Result < ( ) , Status > {
51+ pub fn get_current_time ( ) -> Result < SystemTime , Status > {
52+ let mut return_time: u64 = 0 ;
5253 unsafe {
53- match proxy_set_tick_period_milliseconds ( period . as_millis ( ) as u32 ) {
54- Status :: Ok => Ok ( ( ) ) ,
54+ match proxy_get_current_time_nanoseconds ( & mut return_time ) {
55+ Status :: Ok => Ok ( UNIX_EPOCH + Duration :: from_nanos ( return_time ) ) ,
5556 status => panic ! ( "unexpected status: {}" , status as u32 ) ,
5657 }
5758 }
5859}
5960
6061extern "C" {
61- fn proxy_get_configuration (
62- return_buffer_data : * mut * mut u8 ,
63- return_buffer_size : * mut usize ,
64- ) -> Status ;
62+ fn proxy_set_tick_period_milliseconds ( period : u32 ) -> Status ;
6563}
6664
67- pub fn get_configuration ( ) -> Result < Option < Bytes > , Status > {
68- let mut return_data: * mut u8 = null_mut ( ) ;
69- let mut return_size: usize = 0 ;
65+ pub fn set_tick_period ( period : Duration ) -> Result < ( ) , Status > {
7066 unsafe {
71- match proxy_get_configuration ( & mut return_data, & mut return_size) {
72- Status :: Ok => {
73- if !return_data. is_null ( ) {
74- Ok ( Some ( Vec :: from_raw_parts (
75- return_data,
76- return_size,
77- return_size,
78- ) ) )
79- } else {
80- Ok ( None )
81- }
82- }
67+ match proxy_set_tick_period_milliseconds ( period. as_millis ( ) as u32 ) {
68+ Status :: Ok => Ok ( ( ) ) ,
8369 status => panic ! ( "unexpected status: {}" , status as u32 ) ,
8470 }
8571 }
@@ -258,6 +244,7 @@ pub fn get_map_value(map_type: MapType, key: &str) -> Result<Option<String>, Sta
258244 Ok ( None )
259245 }
260246 }
247+ Status :: NotFound => Ok ( None ) ,
261248 status => panic ! ( "unexpected status: {}" , status as u32 ) ,
262249 }
263250 }
@@ -285,6 +272,7 @@ pub fn get_map_value_bytes(map_type: MapType, key: &str) -> Result<Option<Bytes>
285272 Ok ( None )
286273 }
287274 }
275+ Status :: NotFound => Ok ( None ) ,
288276 status => panic ! ( "unexpected status: {}" , status as u32 ) ,
289277 }
290278 }
@@ -624,25 +612,78 @@ pub fn enqueue_shared_queue(queue_id: u32, value: Option<&[u8]>) -> Result<(), S
624612}
625613
626614extern "C" {
627- fn proxy_continue_request ( ) -> Status ;
615+ fn proxy_continue_stream ( stream_type : StreamType ) -> Status ;
616+ }
617+
618+ pub fn resume_downstream ( ) -> Result < ( ) , Status > {
619+ unsafe {
620+ match proxy_continue_stream ( StreamType :: Downstream ) {
621+ Status :: Ok => Ok ( ( ) ) ,
622+ status => panic ! ( "unexpected status: {}" , status as u32 ) ,
623+ }
624+ }
625+ }
626+
627+ pub fn resume_upstream ( ) -> Result < ( ) , Status > {
628+ unsafe {
629+ match proxy_continue_stream ( StreamType :: Upstream ) {
630+ Status :: Ok => Ok ( ( ) ) ,
631+ status => panic ! ( "unexpected status: {}" , status as u32 ) ,
632+ }
633+ }
628634}
629635
630636pub fn resume_http_request ( ) -> Result < ( ) , Status > {
631637 unsafe {
632- match proxy_continue_request ( ) {
638+ match proxy_continue_stream ( StreamType :: HttpRequest ) {
639+ Status :: Ok => Ok ( ( ) ) ,
640+ status => panic ! ( "unexpected status: {}" , status as u32 ) ,
641+ }
642+ }
643+ }
644+
645+ pub fn resume_http_response ( ) -> Result < ( ) , Status > {
646+ unsafe {
647+ match proxy_continue_stream ( StreamType :: HttpResponse ) {
633648 Status :: Ok => Ok ( ( ) ) ,
634649 status => panic ! ( "unexpected status: {}" , status as u32 ) ,
635650 }
636651 }
637652}
638653
639654extern "C" {
640- fn proxy_continue_response ( ) -> Status ;
655+ fn proxy_close_stream ( stream_type : StreamType ) -> Status ;
641656}
642657
643- pub fn resume_http_response ( ) -> Result < ( ) , Status > {
658+ pub fn close_downstream ( ) -> Result < ( ) , Status > {
659+ unsafe {
660+ match proxy_close_stream ( StreamType :: Downstream ) {
661+ Status :: Ok => Ok ( ( ) ) ,
662+ status => panic ! ( "unexpected status: {}" , status as u32 ) ,
663+ }
664+ }
665+ }
666+ pub fn close_upstream ( ) -> Result < ( ) , Status > {
667+ unsafe {
668+ match proxy_close_stream ( StreamType :: Upstream ) {
669+ Status :: Ok => Ok ( ( ) ) ,
670+ status => panic ! ( "unexpected status: {}" , status as u32 ) ,
671+ }
672+ }
673+ }
674+
675+ pub fn reset_http_request ( ) -> Result < ( ) , Status > {
676+ unsafe {
677+ match proxy_close_stream ( StreamType :: HttpRequest ) {
678+ Status :: Ok => Ok ( ( ) ) ,
679+ status => panic ! ( "unexpected status: {}" , status as u32 ) ,
680+ }
681+ }
682+ }
683+
684+ pub fn reset_http_response ( ) -> Result < ( ) , Status > {
644685 unsafe {
645- match proxy_continue_response ( ) {
686+ match proxy_close_stream ( StreamType :: HttpResponse ) {
646687 Status :: Ok => Ok ( ( ) ) ,
647688 status => panic ! ( "unexpected status: {}" , status as u32 ) ,
648689 }
@@ -685,19 +726,6 @@ pub fn send_http_response(
685726 }
686727}
687728
688- extern "C" {
689- fn proxy_clear_route_cache ( ) -> Status ;
690- }
691-
692- pub fn clear_http_route_cache ( ) -> Result < ( ) , Status > {
693- unsafe {
694- match proxy_clear_route_cache ( ) {
695- Status :: Ok => Ok ( ( ) ) ,
696- status => panic ! ( "unexpected status: {}" , status as u32 ) ,
697- }
698- }
699- }
700-
701729extern "C" {
702730 fn proxy_http_call (
703731 upstream_data : * const u8 ,
0 commit comments