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