@@ -40,6 +40,7 @@ import java.util.concurrent.TimeUnit
40
40
41
41
private const val ETHERDELTA_CONTRACT_ADDRESS = " 0x8d12a197cb00d4747a1fe03395095ce2a5cc6819"
42
42
private const val ETH_SYMBOL = " ETH"
43
+ private const val ETHERDELTA_CONNECTION_TIMEOUT_MS : Long = 5 * 60 * 1000
43
44
44
45
@Component
45
46
class EtherdeltaTradeConnector : Connector {
@@ -48,6 +49,7 @@ class EtherdeltaTradeConnector : Connector {
48
49
private val exchangeName = " ETHERDELTA"
49
50
private val tradesTopicName by lazy { TRADES_TOPIC_PREFIX + exchangeName }
50
51
private lateinit var etherdeltaContract: EtherdeltaContract
52
+ private var lastTradeTimestamp: Long? = null
51
53
52
54
@Autowired
53
55
private lateinit var web3j: Web3j
@@ -86,15 +88,11 @@ class EtherdeltaTradeConnector : Connector {
86
88
}
87
89
88
90
override fun isAlive (): Boolean {
89
- val test : String?
91
+ val currentTimestamp = Date ().time
90
92
91
- try {
92
- test = etherdeltaContract.accountLevelsAddr().send()
93
- } catch (e: Throwable ) {
94
- return false
95
- }
93
+ return lastTradeTimestamp != null &&
94
+ currentTimestamp - lastTradeTimestamp!! < ETHERDELTA_CONNECTION_TIMEOUT_MS
96
95
97
- return test != null
98
96
}
99
97
100
98
/* *
@@ -180,6 +178,7 @@ class EtherdeltaTradeConnector : Connector {
180
178
}
181
179
182
180
val timestamp = Numeric .toBigInt(block.block.timestampRaw).multiply(BigInteger .valueOf(1000 )).toLong()
181
+ lastTradeTimestamp = timestamp
183
182
184
183
if (tokenGive.symbol == ETH_SYMBOL ) {
185
184
val price = amountGive.divide(amountGet, tokenGive.decimals, RoundingMode .HALF_EVEN )
0 commit comments