Added connector mapping in registry

This commit is contained in:
Thrilok Kumar 2020-09-07 03:35:09 +05:30
parent e360235c24
commit a589abfb75
2 changed files with 32 additions and 3 deletions

View File

@ -12,6 +12,8 @@ contract Flusher {
event LogCast(address indexed sender, uint value); event LogCast(address indexed sender, uint value);
string constant public name = "Flusher-v1"; string constant public name = "Flusher-v1";
uint constant version = 1;
RegistryInterface public constant registry = RegistryInterface(address(0)); // TODO - Change while deploying. RegistryInterface public constant registry = RegistryInterface(address(0)); // TODO - Change while deploying.
function spell(address _target, bytes memory _data) internal { function spell(address _target, bytes memory _data) internal {

View File

@ -22,6 +22,8 @@ contract Registry {
event LogRemovePool(address indexed token, address indexed pool); event LogRemovePool(address indexed token, address indexed pool);
event LogAddSettleLogic(address indexed token, address indexed logic); event LogAddSettleLogic(address indexed token, address indexed logic);
event LogRemoveSettleLogic(address indexed token, address indexed logic); event LogRemoveSettleLogic(address indexed token, address indexed logic);
event LogConnectorEnable(address indexed connector);
event LogConnectorDisable(address indexed connector);
IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723);
@ -33,6 +35,7 @@ contract Registry {
mapping (address => uint) public poolCap; mapping (address => uint) public poolCap;
mapping (address => uint) public fee; mapping (address => uint) public fee;
mapping (address => mapping(address => bool)) public settleLogic; mapping (address => mapping(address => bool)) public settleLogic;
mapping(address => bool) public connectors;
modifier isMaster() { modifier isMaster() {
require(msg.sender == instaIndex.master(), "not-master"); require(msg.sender == instaIndex.master(), "not-master");
@ -180,13 +183,37 @@ contract Registry {
emit LogRemoveSettleLogic(_pool, _logic); emit LogRemoveSettleLogic(_pool, _logic);
} }
function checkSettleLogics(address _pool, address[] calldata _logics) external view returns(bool) { function enableConnector(address _connector) external isChief {
require(!connectors[_connector], "already-enabled");
require(_connector != address(0), "invalid-connector");
connectors[_connector] = true;
emit LogConnectorEnable(_connector);
}
function disableConnector(address _connector) external isChief {
require(connectors[_connector], "already-disabled");
delete connectors[_connector];
emit LogConnectorDisable(_connector);
}
function checkSettleLogics(address _pool, address[] calldata _logics) external view returns(bool isOk) {
isOk = true;
for (uint i = 0; i < _logics.length; i++) { for (uint i = 0; i < _logics.length; i++) {
if (!settleLogic[_pool][_logics[i]]) { if (!settleLogic[_pool][_logics[i]]) {
return false; isOk = false;
break;
}
}
}
function isConnector(address[] calldata _connectors) external view returns (bool isOk) {
isOk = true;
for (uint i = 0; i < _connectors.length; i++) {
if (!connectors[_connectors[i]]) {
isOk = false;
break;
} }
} }
return true;
} }
constructor(address _chief) public { constructor(address _chief) public {