Skip to content

Commit be2d37f

Browse files
committed
f - pass channel limits as readable args
1 parent b06c152 commit be2d37f

1 file changed

Lines changed: 35 additions & 25 deletions

File tree

lightning/src/ln/resource_manager.rs

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -594,33 +594,27 @@ impl Writeable for Channel {
594594
.collect(),
595595
};
596596
write_tlv_fields!(writer, {
597-
(1, self.max_htlc_value_in_flight_msat, required),
598-
(3, self.max_accepted_htlcs, required),
599-
(5, self.outgoing_reputation, required),
600-
(7, self.incoming_revenue, required),
601-
(9, general_bucket_data, required),
602-
(11, self.last_congestion_misuse, required),
597+
(1, self.outgoing_reputation, required),
598+
(3, self.incoming_revenue, required),
599+
(5, general_bucket_data, required),
600+
(7, self.last_congestion_misuse, required),
603601
});
604602
Ok(())
605603
}
606604
}
607605

608-
impl<ES: EntropySource> ReadableArgs<(&ResourceManagerConfig, &ES)> for Channel {
606+
impl<ES: EntropySource> ReadableArgs<(u64, u16, &ResourceManagerConfig, &ES)> for Channel {
609607
fn read<R: Read>(
610-
reader: &mut R, args: (&ResourceManagerConfig, &ES),
608+
reader: &mut R, args: (u64, u16, &ResourceManagerConfig, &ES),
611609
) -> Result<Self, DecodeError> {
612-
let (config, entropy_source) = args;
610+
let (max_htlc_value_in_flight_msat, max_accepted_htlcs, config, entropy_source) = args;
613611
_init_and_read_len_prefixed_tlv_fields!(reader, {
614-
(1, max_htlc_value_in_flight_msat, required),
615-
(3, max_accepted_htlcs, required),
616-
(5, outgoing_reputation, required),
617-
(7, incoming_revenue, required),
618-
(9, general_bucket_data, required),
619-
(11, last_congestion_misuse, required),
612+
(1, outgoing_reputation, required),
613+
(3, incoming_revenue, required),
614+
(5, general_bucket_data, required),
615+
(7, last_congestion_misuse, required),
620616
});
621617

622-
let max_htlc_value_in_flight_msat: u64 = max_htlc_value_in_flight_msat.0.unwrap();
623-
let max_accepted_htlcs: u16 = max_accepted_htlcs.0.unwrap();
624618
let general_bucket_data: GeneralBucketData = general_bucket_data.0.unwrap();
625619

626620
let alloc = bucket_allocations(
@@ -1001,13 +995,15 @@ impl Writeable for DefaultResourceManager {
1001995
}
1002996
}
1003997

1004-
impl<ES: EntropySource> ReadableArgs<(ResourceManagerConfig, &ES)> for DefaultResourceManager {
998+
impl<ES: EntropySource> ReadableArgs<(ResourceManagerConfig, &ES, &HashMap<u64, (u64, u16)>)>
999+
for DefaultResourceManager
1000+
{
10051001
fn read<R: Read>(
1006-
reader: &mut R, args: (ResourceManagerConfig, &ES),
1002+
reader: &mut R, args: (ResourceManagerConfig, &ES, &HashMap<u64, (u64, u16)>),
10071003
) -> Result<DefaultResourceManager, DecodeError> {
1008-
let (config, entropy_source) = args;
1004+
let (config, entropy_source, channel_limits) = args;
10091005
_init_and_read_len_prefixed_tlv_fields!(reader, {
1010-
(1, channels, (required: ReadableArgs, (&config, entropy_source))),
1006+
(1, channels, (required: ReadableArgs, (&config, entropy_source, channel_limits))),
10111007
});
10121008
let channels: HashMap<u64, Channel> = channels.0.unwrap();
10131009
Ok(DefaultResourceManager {
@@ -1018,13 +1014,23 @@ impl<ES: EntropySource> ReadableArgs<(ResourceManagerConfig, &ES)> for DefaultRe
10181014
}
10191015
}
10201016

1021-
impl<ES: EntropySource> ReadableArgs<(&ResourceManagerConfig, &ES)> for HashMap<u64, Channel> {
1022-
fn read<R: Read>(r: &mut R, args: (&ResourceManagerConfig, &ES)) -> Result<Self, DecodeError> {
1017+
impl<ES: EntropySource> ReadableArgs<(&ResourceManagerConfig, &ES, &HashMap<u64, (u64, u16)>)>
1018+
for HashMap<u64, Channel>
1019+
{
1020+
fn read<R: Read>(
1021+
r: &mut R, args: (&ResourceManagerConfig, &ES, &HashMap<u64, (u64, u16)>),
1022+
) -> Result<Self, DecodeError> {
1023+
let (config, entropy_source, channel_limits) = args;
10231024
let len: CollectionLength = Readable::read(r)?;
10241025
let mut ret = new_hash_map();
10251026
for _ in 0..len.0 {
10261027
let k: u64 = Readable::read(r)?;
1027-
let v = Channel::read(r, args)?;
1028+
let &(max_htlc_value_in_flight_msat, max_accepted_htlcs) =
1029+
channel_limits.get(&k).ok_or(DecodeError::InvalidValue)?;
1030+
let v = Channel::read(
1031+
r,
1032+
(max_htlc_value_in_flight_msat, max_accepted_htlcs, config, entropy_source),
1033+
)?;
10281034
if ret.insert(k, v).is_some() {
10291035
return Err(DecodeError::InvalidValue);
10301036
}
@@ -2539,9 +2545,13 @@ mod tests {
25392545
.unwrap()
25402546
.clone();
25412547

2548+
let mut channel_limits = crate::prelude::new_hash_map();
2549+
channel_limits.insert(INCOMING_SCID, (5_000_000_000u64, 114u16));
2550+
channel_limits.insert(OUTGOING_SCID, (5_000_000_000u64, 114u16));
2551+
25422552
let deserialized_rm = DefaultResourceManager::read(
25432553
&mut serialized_rm.as_slice(),
2544-
(ResourceManagerConfig::default(), &entropy_source),
2554+
(ResourceManagerConfig::default(), &entropy_source, &channel_limits),
25452555
)
25462556
.unwrap();
25472557
let deserialized_channels = deserialized_rm.channels.lock().unwrap();

0 commit comments

Comments
 (0)