@@ -414,7 +414,7 @@ define_state_flags!(
414
414
]
415
415
);
416
416
417
- #[derive(Copy, Clone, Debug, PartialEq, PartialOrd, Eq)]
417
+ #[derive(Copy, Clone, Debug, PartialEq, Eq)]
418
418
enum ChannelState {
419
419
/// We are negotiating the parameters required for the channel prior to funding it.
420
420
NegotiatingFunding(NegotiatingFundingFlags),
@@ -433,6 +433,48 @@ enum ChannelState {
433
433
ShutdownComplete,
434
434
}
435
435
436
+ impl PartialOrd for ChannelState {
437
+ fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
438
+ match self {
439
+ ChannelState::NegotiatingFunding(flags) => match other {
440
+ ChannelState::NegotiatingFunding(other_flags) => flags.partial_cmp(other_flags),
441
+ ChannelState::FundingNegotiated => Some(cmp::Ordering::Less),
442
+ ChannelState::AwaitingChannelReady(_) => Some(cmp::Ordering::Less),
443
+ ChannelState::ChannelReady(_) => Some(cmp::Ordering::Less),
444
+ ChannelState::ShutdownComplete => Some(cmp::Ordering::Less),
445
+ },
446
+ ChannelState::FundingNegotiated => match other {
447
+ ChannelState::NegotiatingFunding(_) => Some(cmp::Ordering::Greater),
448
+ ChannelState::FundingNegotiated => Some(cmp::Ordering::Equal),
449
+ ChannelState::AwaitingChannelReady(_) => Some(cmp::Ordering::Less),
450
+ ChannelState::ChannelReady(_) => Some(cmp::Ordering::Less),
451
+ ChannelState::ShutdownComplete => Some(cmp::Ordering::Less),
452
+ },
453
+ ChannelState::AwaitingChannelReady(flags) => match other {
454
+ ChannelState::NegotiatingFunding(_) => Some(cmp::Ordering::Greater),
455
+ ChannelState::FundingNegotiated => Some(cmp::Ordering::Greater),
456
+ ChannelState::AwaitingChannelReady(other_flags) => flags.partial_cmp(other_flags),
457
+ ChannelState::ChannelReady(_) => Some(cmp::Ordering::Less),
458
+ ChannelState::ShutdownComplete => Some(cmp::Ordering::Less),
459
+ },
460
+ ChannelState::ChannelReady(flags) => match other {
461
+ ChannelState::NegotiatingFunding(_) => Some(cmp::Ordering::Greater),
462
+ ChannelState::FundingNegotiated => Some(cmp::Ordering::Greater),
463
+ ChannelState::AwaitingChannelReady(_) => Some(cmp::Ordering::Greater),
464
+ ChannelState::ChannelReady(other_flags) => flags.partial_cmp(other_flags),
465
+ ChannelState::ShutdownComplete => Some(cmp::Ordering::Less),
466
+ },
467
+ ChannelState::ShutdownComplete => match other {
468
+ ChannelState::NegotiatingFunding(_) => Some(cmp::Ordering::Greater),
469
+ ChannelState::FundingNegotiated => Some(cmp::Ordering::Greater),
470
+ ChannelState::AwaitingChannelReady(_) => Some(cmp::Ordering::Greater),
471
+ ChannelState::ChannelReady(_) => Some(cmp::Ordering::Greater),
472
+ ChannelState::ShutdownComplete => Some(cmp::Ordering::Equal),
473
+ },
474
+ }
475
+ }
476
+ }
477
+
436
478
macro_rules! impl_state_flag {
437
479
($get: ident, $set: ident, $clear: ident, $state_flag: expr, [$($state: ident),+]) => {
438
480
#[allow(unused)]
0 commit comments