@@ -47,6 +47,7 @@ contract RocketMinipoolQueue is RocketBase, RocketMinipoolQueueInterface {
4747 // Get the length of a queue
4848 // Returns 0 for invalid queues
4949 function getLength (MinipoolDeposit _depositType ) override external view returns (uint256 ) {
50+ if (_depositType == MinipoolDeposit.Efficient) { return getLength (queueKeyEfficient); }
5051 if (_depositType == MinipoolDeposit.Full) { return getLength (queueKeyFull); }
5152 if (_depositType == MinipoolDeposit.Half) { return getLength (queueKeyHalf); }
5253 if (_depositType == MinipoolDeposit.Empty) { return getLength (queueKeyEmpty); }
@@ -64,12 +65,15 @@ contract RocketMinipoolQueue is RocketBase, RocketMinipoolQueueInterface {
6465 getLength (queueKeyFull).mul (rocketDAOProtocolSettingsMinipool.getFullDepositUserAmount ())
6566 ).add (
6667 getLength (queueKeyHalf).mul (rocketDAOProtocolSettingsMinipool.getHalfDepositUserAmount ())
68+ ).add (
69+ getLength (queueKeyEfficient).mul (rocketDAOProtocolSettingsMinipool.getEfficientDepositUserAmount ())
6770 );
6871 }
6972
7073 // Add a minipool to the end of the appropriate queue
7174 // Only accepts calls from the RocketMinipoolManager contract
7275 function enqueueMinipool (MinipoolDeposit _depositType , address _minipool ) override external onlyLatestContract ("rocketMinipoolQueue " , address (this )) onlyLatestContract ("rocketMinipoolManager " , msg .sender ) {
76+ if (_depositType == MinipoolDeposit.Efficient) { return enqueueMinipool (queueKeyEfficient, _minipool); }
7377 if (_depositType == MinipoolDeposit.Half) { return enqueueMinipool (queueKeyHalf, _minipool); }
7478 if (_depositType == MinipoolDeposit.Full) { return enqueueMinipool (queueKeyFull, _minipool); }
7579 if (_depositType == MinipoolDeposit.Empty) { return enqueueMinipool (queueKeyEmpty, _minipool); }
@@ -83,15 +87,10 @@ contract RocketMinipoolQueue is RocketBase, RocketMinipoolQueueInterface {
8387 emit MinipoolEnqueued (_minipool, _key, block .timestamp );
8488 }
8589
86- // Remove the first available minipool from the highest priority queue and return its address
8790 // Only accepts calls from the RocketDepositPool contract
88- function dequeueMinipool () override external onlyLatestContract ("rocketMinipoolQueue " , address (this )) onlyLatestContract ("rocketDepositPool " , msg .sender ) returns (address minipoolAddress ) {
89- if (getLength (queueKeyHalf) > 0 ) { return dequeueMinipool (queueKeyHalf); }
90- if (getLength (queueKeyFull) > 0 ) { return dequeueMinipool (queueKeyFull); }
91- if (getLength (queueKeyEmpty) > 0 ) { return dequeueMinipool (queueKeyEmpty); }
92- require (false , "No minipools are available " );
9391 }
9492 function dequeueMinipoolByDeposit (MinipoolDeposit _depositType ) override external onlyLatestContract ("rocketMinipoolQueue " , address (this )) onlyLatestContract ("rocketDepositPool " , msg .sender ) returns (address minipoolAddress ) {
93+ if (_depositType == MinipoolDeposit.Efficient) { return dequeueMinipool (queueKeyEfficient); }
9594 if (_depositType == MinipoolDeposit.Half) { return dequeueMinipool (queueKeyHalf); }
9695 if (_depositType == MinipoolDeposit.Full) { return dequeueMinipool (queueKeyFull); }
9796 if (_depositType == MinipoolDeposit.Empty) { return dequeueMinipool (queueKeyEmpty); }
@@ -113,6 +112,7 @@ contract RocketMinipoolQueue is RocketBase, RocketMinipoolQueueInterface {
113112 // queue. This is acceptable because removing minipools should be rare.
114113 function removeMinipool (MinipoolDeposit _depositType ) override external onlyLatestContract ("rocketMinipoolQueue " , address (this )) onlyRegisteredMinipool (msg .sender ) {
115114 // Remove minipool from queue
115+ if (_depositType == MinipoolDeposit.Efficient) { return removeMinipool (queueKeyEfficient, msg .sender ); }
116116 if (_depositType == MinipoolDeposit.Half) { return removeMinipool (queueKeyHalf, msg .sender ); }
117117 if (_depositType == MinipoolDeposit.Full) { return removeMinipool (queueKeyFull, msg .sender ); }
118118 if (_depositType == MinipoolDeposit.Empty) { return removeMinipool (queueKeyEmpty, msg .sender ); }
0 commit comments