nautilus_binance/spot/sbe/generated/
new_order_result_response_codec.rs1pub use decoder::NewOrderResultResponseDecoder;
2pub use encoder::NewOrderResultResponseEncoder;
3
4use super::*;
5pub use super::{SBE_SCHEMA_ID, SBE_SCHEMA_VERSION, SBE_SEMANTIC_VERSION};
6
7pub const SBE_BLOCK_LENGTH: u16 = 154;
8pub const SBE_TEMPLATE_ID: u16 = 301;
9
10pub mod encoder {
11 use message_header_codec::*;
12
13 use super::*;
14
15 #[derive(Debug, Default)]
16 pub struct NewOrderResultResponseEncoder<'a> {
17 buf: WriteBuf<'a>,
18 initial_offset: usize,
19 offset: usize,
20 limit: usize,
21 }
22
23 impl<'a> Writer<'a> for NewOrderResultResponseEncoder<'a> {
24 #[inline]
25 fn get_buf_mut(&mut self) -> &mut WriteBuf<'a> {
26 &mut self.buf
27 }
28 }
29
30 impl<'a> Encoder<'a> for NewOrderResultResponseEncoder<'a> {
31 #[inline]
32 fn get_limit(&self) -> usize {
33 self.limit
34 }
35
36 #[inline]
37 fn set_limit(&mut self, limit: usize) {
38 self.limit = limit;
39 }
40 }
41
42 impl<'a> NewOrderResultResponseEncoder<'a> {
43 pub fn wrap(mut self, buf: WriteBuf<'a>, offset: usize) -> Self {
44 let limit = offset + SBE_BLOCK_LENGTH as usize;
45 self.buf = buf;
46 self.initial_offset = offset;
47 self.offset = offset;
48 self.limit = limit;
49 self
50 }
51
52 #[inline]
53 pub fn encoded_length(&self) -> usize {
54 self.limit - self.offset
55 }
56
57 pub fn header(self, offset: usize) -> MessageHeaderEncoder<Self> {
58 let mut header = MessageHeaderEncoder::default().wrap(self, offset);
59 header.block_length(SBE_BLOCK_LENGTH);
60 header.template_id(SBE_TEMPLATE_ID);
61 header.schema_id(SBE_SCHEMA_ID);
62 header.version(SBE_SCHEMA_VERSION);
63 header
64 }
65
66 #[inline]
76 pub fn price_exponent(&mut self, value: i8) {
77 let offset = self.offset;
78 self.get_buf_mut().put_i8_at(offset, value);
79 }
80
81 #[inline]
91 pub fn qty_exponent(&mut self, value: i8) {
92 let offset = self.offset + 1;
93 self.get_buf_mut().put_i8_at(offset, value);
94 }
95
96 #[inline]
106 pub fn order_id(&mut self, value: i64) {
107 let offset = self.offset + 2;
108 self.get_buf_mut().put_i64_at(offset, value);
109 }
110
111 #[inline]
121 pub fn order_list_id(&mut self, value: i64) {
122 let offset = self.offset + 10;
123 self.get_buf_mut().put_i64_at(offset, value);
124 }
125
126 #[inline]
136 pub fn transact_time(&mut self, value: i64) {
137 let offset = self.offset + 18;
138 self.get_buf_mut().put_i64_at(offset, value);
139 }
140
141 #[inline]
151 pub fn price(&mut self, value: i64) {
152 let offset = self.offset + 26;
153 self.get_buf_mut().put_i64_at(offset, value);
154 }
155
156 #[inline]
166 pub fn orig_qty(&mut self, value: i64) {
167 let offset = self.offset + 34;
168 self.get_buf_mut().put_i64_at(offset, value);
169 }
170
171 #[inline]
181 pub fn executed_qty(&mut self, value: i64) {
182 let offset = self.offset + 42;
183 self.get_buf_mut().put_i64_at(offset, value);
184 }
185
186 #[inline]
196 pub fn cummulative_quote_qty(&mut self, value: i64) {
197 let offset = self.offset + 50;
198 self.get_buf_mut().put_i64_at(offset, value);
199 }
200
201 #[inline]
203 pub fn status(&mut self, value: order_status::OrderStatus) {
204 let offset = self.offset + 58;
205 self.get_buf_mut().put_u8_at(offset, value as u8)
206 }
207
208 #[inline]
210 pub fn time_in_force(&mut self, value: time_in_force::TimeInForce) {
211 let offset = self.offset + 59;
212 self.get_buf_mut().put_u8_at(offset, value as u8)
213 }
214
215 #[inline]
217 pub fn order_type(&mut self, value: order_type::OrderType) {
218 let offset = self.offset + 60;
219 self.get_buf_mut().put_u8_at(offset, value as u8)
220 }
221
222 #[inline]
224 pub fn side(&mut self, value: order_side::OrderSide) {
225 let offset = self.offset + 61;
226 self.get_buf_mut().put_u8_at(offset, value as u8)
227 }
228
229 #[inline]
239 pub fn stop_price(&mut self, value: i64) {
240 let offset = self.offset + 62;
241 self.get_buf_mut().put_i64_at(offset, value);
242 }
243
244 #[inline]
254 pub fn trailing_delta(&mut self, value: i64) {
255 let offset = self.offset + 70;
256 self.get_buf_mut().put_i64_at(offset, value);
257 }
258
259 #[inline]
269 pub fn trailing_time(&mut self, value: i64) {
270 let offset = self.offset + 78;
271 self.get_buf_mut().put_i64_at(offset, value);
272 }
273
274 #[inline]
284 pub fn working_time(&mut self, value: i64) {
285 let offset = self.offset + 86;
286 self.get_buf_mut().put_i64_at(offset, value);
287 }
288
289 #[inline]
299 pub fn iceberg_qty(&mut self, value: i64) {
300 let offset = self.offset + 94;
301 self.get_buf_mut().put_i64_at(offset, value);
302 }
303
304 #[inline]
314 pub fn strategy_id(&mut self, value: i64) {
315 let offset = self.offset + 102;
316 self.get_buf_mut().put_i64_at(offset, value);
317 }
318
319 #[inline]
329 pub fn strategy_type(&mut self, value: i32) {
330 let offset = self.offset + 110;
331 self.get_buf_mut().put_i32_at(offset, value);
332 }
333
334 #[inline]
336 pub fn order_capacity(&mut self, value: order_capacity::OrderCapacity) {
337 let offset = self.offset + 114;
338 self.get_buf_mut().put_u8_at(offset, value as u8)
339 }
340
341 #[inline]
343 pub fn working_floor(&mut self, value: floor::Floor) {
344 let offset = self.offset + 115;
345 self.get_buf_mut().put_u8_at(offset, value as u8)
346 }
347
348 #[inline]
350 pub fn self_trade_prevention_mode(
351 &mut self,
352 value: self_trade_prevention_mode::SelfTradePreventionMode,
353 ) {
354 let offset = self.offset + 116;
355 self.get_buf_mut().put_u8_at(offset, value as u8)
356 }
357
358 #[inline]
368 pub fn trade_group_id(&mut self, value: i64) {
369 let offset = self.offset + 117;
370 self.get_buf_mut().put_i64_at(offset, value);
371 }
372
373 #[inline]
383 pub fn prevented_quantity(&mut self, value: i64) {
384 let offset = self.offset + 125;
385 self.get_buf_mut().put_i64_at(offset, value);
386 }
387
388 #[inline]
390 pub fn used_sor(&mut self, value: bool_enum::BoolEnum) {
391 let offset = self.offset + 133;
392 self.get_buf_mut().put_u8_at(offset, value as u8)
393 }
394
395 #[inline]
405 pub fn orig_quote_order_qty(&mut self, value: i64) {
406 let offset = self.offset + 134;
407 self.get_buf_mut().put_i64_at(offset, value);
408 }
409
410 #[inline]
412 pub fn peg_price_type(&mut self, value: peg_price_type::PegPriceType) {
413 let offset = self.offset + 142;
414 self.get_buf_mut().put_u8_at(offset, value as u8)
415 }
416
417 #[inline]
419 pub fn peg_offset_type(&mut self, value: peg_offset_type::PegOffsetType) {
420 let offset = self.offset + 143;
421 self.get_buf_mut().put_u8_at(offset, value as u8)
422 }
423
424 #[inline]
434 pub fn peg_offset_value(&mut self, value: u8) {
435 let offset = self.offset + 144;
436 self.get_buf_mut().put_u8_at(offset, value);
437 }
438
439 #[inline]
449 pub fn pegged_price(&mut self, value: i64) {
450 let offset = self.offset + 145;
451 self.get_buf_mut().put_i64_at(offset, value);
452 }
453
454 #[inline]
456 pub fn expiry_reason(&mut self, value: expiry_reason::ExpiryReason) {
457 let offset = self.offset + 153;
458 self.get_buf_mut().put_u8_at(offset, value as u8)
459 }
460
461 #[inline]
463 pub fn symbol(&mut self, value: &str) {
464 let limit = self.get_limit();
465 let data_length = value.len();
466 self.set_limit(limit + 1 + data_length);
467 self.get_buf_mut().put_u8_at(limit, data_length as u8);
468 self.get_buf_mut().put_slice_at(limit + 1, value.as_bytes());
469 }
470
471 #[inline]
473 pub fn client_order_id(&mut self, value: &str) {
474 let limit = self.get_limit();
475 let data_length = value.len();
476 self.set_limit(limit + 1 + data_length);
477 self.get_buf_mut().put_u8_at(limit, data_length as u8);
478 self.get_buf_mut().put_slice_at(limit + 1, value.as_bytes());
479 }
480 }
481} pub mod decoder {
484 use message_header_codec::*;
485
486 use super::*;
487
488 #[derive(Clone, Copy, Debug, Default)]
489 pub struct NewOrderResultResponseDecoder<'a> {
490 buf: ReadBuf<'a>,
491 initial_offset: usize,
492 offset: usize,
493 limit: usize,
494 pub acting_block_length: u16,
495 pub acting_version: u16,
496 }
497
498 impl ActingVersion for NewOrderResultResponseDecoder<'_> {
499 #[inline]
500 fn acting_version(&self) -> u16 {
501 self.acting_version
502 }
503 }
504
505 impl<'a> Reader<'a> for NewOrderResultResponseDecoder<'a> {
506 #[inline]
507 fn get_buf(&self) -> &ReadBuf<'a> {
508 &self.buf
509 }
510 }
511
512 impl<'a> Decoder<'a> for NewOrderResultResponseDecoder<'a> {
513 #[inline]
514 fn get_limit(&self) -> usize {
515 self.limit
516 }
517
518 #[inline]
519 fn set_limit(&mut self, limit: usize) {
520 self.limit = limit;
521 }
522 }
523
524 impl<'a> NewOrderResultResponseDecoder<'a> {
525 pub fn wrap(
526 mut self,
527 buf: ReadBuf<'a>,
528 offset: usize,
529 acting_block_length: u16,
530 acting_version: u16,
531 ) -> Self {
532 let limit = offset + acting_block_length as usize;
533 self.buf = buf;
534 self.initial_offset = offset;
535 self.offset = offset;
536 self.limit = limit;
537 self.acting_block_length = acting_block_length;
538 self.acting_version = acting_version;
539 self
540 }
541
542 #[inline]
543 pub fn encoded_length(&self) -> usize {
544 self.limit - self.offset
545 }
546
547 pub fn header(self, mut header: MessageHeaderDecoder<ReadBuf<'a>>, offset: usize) -> Self {
548 debug_assert_eq!(SBE_TEMPLATE_ID, header.template_id());
549 let acting_block_length = header.block_length();
550 let acting_version = header.version();
551
552 self.wrap(
553 header.parent().unwrap(),
554 offset + message_header_codec::ENCODED_LENGTH,
555 acting_block_length,
556 acting_version,
557 )
558 }
559
560 #[inline]
562 pub fn price_exponent(&self) -> i8 {
563 self.get_buf().get_i8_at(self.offset)
564 }
565
566 #[inline]
568 pub fn qty_exponent(&self) -> i8 {
569 self.get_buf().get_i8_at(self.offset + 1)
570 }
571
572 #[inline]
574 pub fn order_id(&self) -> i64 {
575 self.get_buf().get_i64_at(self.offset + 2)
576 }
577
578 #[inline]
580 pub fn order_list_id(&self) -> Option<i64> {
581 let value = self.get_buf().get_i64_at(self.offset + 10);
582 if value == -9223372036854775808_i64 {
583 None
584 } else {
585 Some(value)
586 }
587 }
588
589 #[inline]
591 pub fn transact_time(&self) -> i64 {
592 self.get_buf().get_i64_at(self.offset + 18)
593 }
594
595 #[inline]
597 pub fn price(&self) -> i64 {
598 self.get_buf().get_i64_at(self.offset + 26)
599 }
600
601 #[inline]
603 pub fn orig_qty(&self) -> i64 {
604 self.get_buf().get_i64_at(self.offset + 34)
605 }
606
607 #[inline]
609 pub fn executed_qty(&self) -> i64 {
610 self.get_buf().get_i64_at(self.offset + 42)
611 }
612
613 #[inline]
615 pub fn cummulative_quote_qty(&self) -> i64 {
616 self.get_buf().get_i64_at(self.offset + 50)
617 }
618
619 #[inline]
621 pub fn status(&self) -> order_status::OrderStatus {
622 self.get_buf().get_u8_at(self.offset + 58).into()
623 }
624
625 #[inline]
627 pub fn time_in_force(&self) -> time_in_force::TimeInForce {
628 self.get_buf().get_u8_at(self.offset + 59).into()
629 }
630
631 #[inline]
633 pub fn order_type(&self) -> order_type::OrderType {
634 self.get_buf().get_u8_at(self.offset + 60).into()
635 }
636
637 #[inline]
639 pub fn side(&self) -> order_side::OrderSide {
640 self.get_buf().get_u8_at(self.offset + 61).into()
641 }
642
643 #[inline]
645 pub fn stop_price(&self) -> Option<i64> {
646 let value = self.get_buf().get_i64_at(self.offset + 62);
647 if value == -9223372036854775808_i64 {
648 None
649 } else {
650 Some(value)
651 }
652 }
653
654 #[inline]
656 pub fn trailing_delta(&self) -> Option<i64> {
657 let value = self.get_buf().get_i64_at(self.offset + 70);
658 if value == -9223372036854775808_i64 {
659 None
660 } else {
661 Some(value)
662 }
663 }
664
665 #[inline]
667 pub fn trailing_time(&self) -> Option<i64> {
668 let value = self.get_buf().get_i64_at(self.offset + 78);
669 if value == -9223372036854775808_i64 {
670 None
671 } else {
672 Some(value)
673 }
674 }
675
676 #[inline]
678 pub fn working_time(&self) -> Option<i64> {
679 let value = self.get_buf().get_i64_at(self.offset + 86);
680 if value == -9223372036854775808_i64 {
681 None
682 } else {
683 Some(value)
684 }
685 }
686
687 #[inline]
689 pub fn iceberg_qty(&self) -> Option<i64> {
690 let value = self.get_buf().get_i64_at(self.offset + 94);
691 if value == -9223372036854775808_i64 {
692 None
693 } else {
694 Some(value)
695 }
696 }
697
698 #[inline]
700 pub fn strategy_id(&self) -> Option<i64> {
701 let value = self.get_buf().get_i64_at(self.offset + 102);
702 if value == -9223372036854775808_i64 {
703 None
704 } else {
705 Some(value)
706 }
707 }
708
709 #[inline]
711 pub fn strategy_type(&self) -> Option<i32> {
712 let value = self.get_buf().get_i32_at(self.offset + 110);
713 if value == -2147483648_i32 {
714 None
715 } else {
716 Some(value)
717 }
718 }
719
720 #[inline]
722 pub fn order_capacity(&self) -> order_capacity::OrderCapacity {
723 self.get_buf().get_u8_at(self.offset + 114).into()
724 }
725
726 #[inline]
728 pub fn working_floor(&self) -> floor::Floor {
729 self.get_buf().get_u8_at(self.offset + 115).into()
730 }
731
732 #[inline]
734 pub fn self_trade_prevention_mode(
735 &self,
736 ) -> self_trade_prevention_mode::SelfTradePreventionMode {
737 self.get_buf().get_u8_at(self.offset + 116).into()
738 }
739
740 #[inline]
742 pub fn trade_group_id(&self) -> Option<i64> {
743 let value = self.get_buf().get_i64_at(self.offset + 117);
744 if value == -9223372036854775808_i64 {
745 None
746 } else {
747 Some(value)
748 }
749 }
750
751 #[inline]
753 pub fn prevented_quantity(&self) -> i64 {
754 self.get_buf().get_i64_at(self.offset + 125)
755 }
756
757 #[inline]
759 pub fn used_sor(&self) -> bool_enum::BoolEnum {
760 self.get_buf().get_u8_at(self.offset + 133).into()
761 }
762
763 #[inline]
765 pub fn orig_quote_order_qty(&self) -> i64 {
766 self.get_buf().get_i64_at(self.offset + 134)
767 }
768
769 #[inline]
771 pub fn peg_price_type(&self) -> peg_price_type::PegPriceType {
772 if self.acting_version() < 1 {
773 return peg_price_type::PegPriceType::default();
774 }
775
776 self.get_buf().get_u8_at(self.offset + 142).into()
777 }
778
779 #[inline]
781 pub fn peg_offset_type(&self) -> peg_offset_type::PegOffsetType {
782 if self.acting_version() < 1 {
783 return peg_offset_type::PegOffsetType::default();
784 }
785
786 self.get_buf().get_u8_at(self.offset + 143).into()
787 }
788
789 #[inline]
791 pub fn peg_offset_value(&self) -> Option<u8> {
792 if self.acting_version() < 1 {
793 return None;
794 }
795
796 let value = self.get_buf().get_u8_at(self.offset + 144);
797 if value == 0xff_u8 { None } else { Some(value) }
798 }
799
800 #[inline]
802 pub fn pegged_price(&self) -> Option<i64> {
803 if self.acting_version() < 1 {
804 return None;
805 }
806
807 let value = self.get_buf().get_i64_at(self.offset + 145);
808 if value == -9223372036854775808_i64 {
809 None
810 } else {
811 Some(value)
812 }
813 }
814
815 #[inline]
817 pub fn expiry_reason(&self) -> expiry_reason::ExpiryReason {
818 if self.acting_version() < 3 {
819 return expiry_reason::ExpiryReason::default();
820 }
821
822 self.get_buf().get_u8_at(self.offset + 153).into()
823 }
824
825 #[inline]
827 pub fn symbol_decoder(&mut self) -> (usize, usize) {
828 let offset = self.get_limit();
829 let data_length = self.get_buf().get_u8_at(offset) as usize;
830 self.set_limit(offset + 1 + data_length);
831 (offset + 1, data_length)
832 }
833
834 #[inline]
835 pub fn symbol_slice(&'a self, coordinates: (usize, usize)) -> &'a [u8] {
836 debug_assert!(self.get_limit() >= coordinates.0 + coordinates.1);
837 self.get_buf().get_slice_at(coordinates.0, coordinates.1)
838 }
839
840 #[inline]
842 pub fn client_order_id_decoder(&mut self) -> (usize, usize) {
843 let offset = self.get_limit();
844 let data_length = self.get_buf().get_u8_at(offset) as usize;
845 self.set_limit(offset + 1 + data_length);
846 (offset + 1, data_length)
847 }
848
849 #[inline]
850 pub fn client_order_id_slice(&'a self, coordinates: (usize, usize)) -> &'a [u8] {
851 debug_assert!(self.get_limit() >= coordinates.0 + coordinates.1);
852 self.get_buf().get_slice_at(coordinates.0, coordinates.1)
853 }
854 }
855}