@@ -21,6 +21,7 @@ use rlp::{Decodable, DecoderError, Encodable, Rlp, RlpStream};
2121enum DatagramTag {
2222 CreateClient = 1 ,
2323 UpdateClient = 2 ,
24+ ConnOpenInit = 3 ,
2425}
2526
2627impl Encodable for DatagramTag {
@@ -35,6 +36,7 @@ impl Decodable for DatagramTag {
3536 match byte {
3637 1 => Ok ( DatagramTag :: CreateClient ) ,
3738 2 => Ok ( DatagramTag :: UpdateClient ) ,
39+ 3 => Ok ( DatagramTag :: ConnOpenInit ) ,
3840 _ => Err ( DecoderError :: Custom ( "Unexpected DatagramTag Value" ) ) ,
3941 }
4042 }
@@ -51,6 +53,13 @@ pub enum Datagram {
5153 id : String ,
5254 header : Vec < u8 > ,
5355 } ,
56+ ConnOpenInit {
57+ identifier : String ,
58+ desired_counterparty_connection_identifier : String ,
59+ counterparty_prefix : String ,
60+ client_identifier : String ,
61+ counterparty_client_identifier : String ,
62+ } ,
5463}
5564
5665impl Encodable for Datagram {
@@ -69,6 +78,21 @@ impl Encodable for Datagram {
6978 } => {
7079 s. begin_list ( 3 ) . append ( & DatagramTag :: UpdateClient ) . append ( id) . append ( header) ;
7180 }
81+ Datagram :: ConnOpenInit {
82+ identifier,
83+ desired_counterparty_connection_identifier,
84+ counterparty_prefix,
85+ client_identifier,
86+ counterparty_client_identifier,
87+ } => {
88+ s. begin_list ( 6 ) ;
89+ s. append ( & DatagramTag :: ConnOpenInit )
90+ . append ( identifier)
91+ . append ( desired_counterparty_connection_identifier)
92+ . append ( counterparty_prefix)
93+ . append ( client_identifier)
94+ . append ( counterparty_client_identifier) ;
95+ }
7296 } ;
7397 }
7498}
@@ -104,6 +128,22 @@ impl Decodable for Datagram {
104128 header : rlp. val_at ( 2 ) ?,
105129 } )
106130 }
131+ DatagramTag :: ConnOpenInit => {
132+ let item_count = rlp. item_count ( ) ?;
133+ if item_count != 6 {
134+ return Err ( DecoderError :: RlpInvalidLength {
135+ expected : 6 ,
136+ got : item_count,
137+ } )
138+ }
139+ Ok ( Datagram :: ConnOpenInit {
140+ identifier : rlp. val_at ( 1 ) ?,
141+ desired_counterparty_connection_identifier : rlp. val_at ( 2 ) ?,
142+ counterparty_prefix : rlp. val_at ( 3 ) ?,
143+ client_identifier : rlp. val_at ( 4 ) ?,
144+ counterparty_client_identifier : rlp. val_at ( 5 ) ?,
145+ } )
146+ }
107147 }
108148 }
109149}
0 commit comments