Skip to content

Commit

Permalink
Refactored to use the same state fertching logic for RebalancingSetTo…
Browse files Browse the repository at this point in the history
…ken and TradingPool getters. Added a couple batch fetch functions.
  • Loading branch information
bweick committed May 12, 2020
1 parent 77d119e commit f71c8d5
Show file tree
Hide file tree
Showing 10 changed files with 2,058 additions and 1,161 deletions.
5 changes: 3 additions & 2 deletions contracts/viewer/ProtocolViewer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ pragma experimental "ABIEncoderV2";

import { ERC20Viewer } from "./lib/ERC20Viewer.sol";
import { ManagerViewer } from "./lib/ManagerViewer.sol";
import { OracleViewer } from "./lib/OracleViewer.sol";
import { RebalancingSetTokenViewer } from "./lib/RebalancingSetTokenViewer.sol";
import { TradingPoolViewer } from "./lib/TradingPoolViewer.sol";
import { CTokenViewer } from "./lib/CTokenViewer.sol";
Expand All @@ -35,8 +36,8 @@ import { CTokenViewer } from "./lib/CTokenViewer.sol";
/* solium-disable-next-line no-empty-blocks */
contract ProtocolViewer is
ERC20Viewer,
RebalancingSetTokenViewer,
TradingPoolViewer,
CTokenViewer,
ManagerViewer
ManagerViewer,
OracleViewer
{}
55 changes: 55 additions & 0 deletions contracts/viewer/lib/OracleViewer.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
Copyright 2020 Set Labs Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

pragma solidity 0.5.7;
pragma experimental "ABIEncoderV2";

import { IOracle } from "set-protocol-oracles/contracts/meta-oracles/interfaces/IOracle.sol";


/**
* @title OracleViewer
* @author Set Protocol
*
* Contract for fetching oracle state
*/
contract OracleViewer {
/*
* Fetches RebalancingSetToken liquidator for an array of RebalancingSetToken instances
*
* @param _rebalancingSetTokens[] RebalancingSetToken contract instances
* @return address[] Current liquidator being used by RebalancingSetToken
*/
function batchFetchOraclePrices(
IOracle[] calldata _oracles
)
external
returns (uint256[] memory)
{
// Cache length of addresses to fetch states for
uint256 _addressesCount = _oracles.length;

// Instantiate output array in memory
uint256[] memory prices = new uint256[](_addressesCount);

// Cycles through contract addresses array and fetches the current price of each oracle
for (uint256 i = 0; i < _addressesCount; i++) {
prices[i] = _oracles[i].read();
}

return prices;
}
}
Loading

0 comments on commit f71c8d5

Please sign in to comment.