Skip to content

Commit a79d31e

Browse files
committed
Batch cancel orders function implementation added
1 parent b3b25ee commit a79d31e

3 files changed

Lines changed: 34 additions & 11 deletions

File tree

zrxkit/src/main/java/com/blocksdecoded/zrxkit/contracts/Contracts.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,7 @@ interface IZrxExchange {
3535

3636
fun cancelOrder(order: SignedOrder): Flowable<String>
3737

38+
fun batchCancelOrders(order: List<SignedOrder>): Flowable<String>
39+
3840
fun ordersInfo(orders: List<SignedOrder>): Flowable<List<OrderInfo>>
3941
}

zrxkit/src/main/java/com/blocksdecoded/zrxkit/contracts/StructFunctionEncoder.kt renamed to zrxkit/src/main/java/com/blocksdecoded/zrxkit/contracts/RawFunctionsEncoder.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.blocksdecoded.zrxkit.contracts
22

3-
import com.blocksdecoded.zrxkit.contracts.StructFunctionEncoder.ExchangeFunction.*
3+
import com.blocksdecoded.zrxkit.contracts.RawFunctionsEncoder.ExchangeFunction.*
44
import com.blocksdecoded.zrxkit.model.OrderInfo
55
import com.blocksdecoded.zrxkit.model.SignedOrder
66
import com.blocksdecoded.zrxkit.utils.clearPrefix
@@ -16,7 +16,7 @@ import org.web3j.crypto.RawTransaction
1616
import org.web3j.tx.gas.ContractGasProvider
1717
import org.web3j.utils.Numeric
1818

19-
internal class StructFunctionEncoder(
19+
internal class RawFunctionsEncoder(
2020
private val gasProvider: ContractGasProvider
2121
) {
2222

@@ -113,6 +113,17 @@ internal class StructFunctionEncoder(
113113
)
114114
)
115115

116+
fun getBatchCancelOrdersTransaction(nonce: BigInteger, orders: List<SignedOrder>): RawTransaction =
117+
getRawTransaction(
118+
BATCH_CANCEL_ORDERS,
119+
nonce,
120+
orders.first().exchangeAddress,
121+
encodeFunction(
122+
BATCH_CANCEL_ORDERS,
123+
orders
124+
)
125+
)
126+
116127
fun getFillOrderTransaction(nonce: BigInteger, order: SignedOrder, fillAmount: BigInteger): RawTransaction {
117128
val data = encodeFunction(
118129
FILL_ORDER,
@@ -179,6 +190,8 @@ internal class StructFunctionEncoder(
179190
) {
180191
CANCEL_ORDER("cancelOrder($ORDER_SIGNATURE)"),
181192

193+
BATCH_CANCEL_ORDERS("batchCancelOrders($ORDER_SIGNATURE[])"),
194+
182195
ORDERS_INFO(
183196
"getOrdersInfo($ORDER_SIGNATURE[])",
184197
"($ORDER_INFO_SIGNATURE[])"

zrxkit/src/main/java/com/blocksdecoded/zrxkit/contracts/ZrxExchangeWrapper.kt

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ internal class ZrxExchangeWrapper(
2222
) : Contract(BINARY, contractAddress, Web3j.build(HttpService(providerUrl)), credentials, contractGasProvider),
2323
IZrxExchange {
2424

25-
private val functionEncoder = StructFunctionEncoder(gasProvider)
25+
private val functionEncoder = RawFunctionsEncoder(gasProvider)
2626

2727
//region Private
2828

@@ -90,14 +90,6 @@ internal class ZrxExchangeWrapper(
9090
}
9191
}
9292

93-
override fun cancelOrder(order: SignedOrder): Flowable<String> {
94-
return getNonce().flatMap {
95-
val transaction = functionEncoder.getCancelOrderTransaction(it, order)
96-
97-
sendTransaction<String>(transaction)
98-
}
99-
}
100-
10193
override fun ordersInfo(orders: List<SignedOrder>): Flowable<List<OrderInfo>> {
10294
val transaction = Transaction.createEthCallTransaction(
10395
credentials.address,
@@ -110,6 +102,22 @@ internal class ZrxExchangeWrapper(
110102
.map { functionEncoder.decodeOrdersInfo(it.value) }
111103
}
112104

105+
override fun cancelOrder(order: SignedOrder): Flowable<String> {
106+
return getNonce().flatMap {
107+
val transaction = functionEncoder.getCancelOrderTransaction(it, order)
108+
109+
sendTransaction<String>(transaction)
110+
}
111+
}
112+
113+
override fun batchCancelOrders(order: List<SignedOrder>): Flowable<String> {
114+
return getNonce().flatMap {
115+
val transaction = functionEncoder.getBatchCancelOrdersTransaction(it, order)
116+
117+
sendTransaction<String>(transaction)
118+
}
119+
}
120+
113121
//endregion
114122

115123
companion object {

0 commit comments

Comments
 (0)