reformat
This commit is contained in:
@@ -11,8 +11,6 @@ import java.time.LocalDateTime;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.locks.ReadWriteLock;
|
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|
||||||
|
|
||||||
public class Order {
|
public class Order {
|
||||||
private final UUID id = UUID.randomUUID();
|
private final UUID id = UUID.randomUUID();
|
||||||
|
|||||||
@@ -3,10 +3,13 @@ package ru.lionarius.impl;
|
|||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import ru.lionarius.api.client.Client;
|
import ru.lionarius.api.client.Client;
|
||||||
import ru.lionarius.api.client.ClientRepository;
|
import ru.lionarius.api.client.ClientRepository;
|
||||||
import ru.lionarius.api.order.OrderList;
|
|
||||||
import ru.lionarius.api.order.Order;
|
import ru.lionarius.api.order.Order;
|
||||||
|
import ru.lionarius.api.order.OrderList;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class InMemoryClientRepository implements ClientRepository {
|
public class InMemoryClientRepository implements ClientRepository {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import com.lmax.disruptor.EventHandler;
|
|||||||
import ru.lionarius.impl.CommandProcessor;
|
import ru.lionarius.impl.CommandProcessor;
|
||||||
|
|
||||||
public class CommandEventHandler implements EventHandler<CommandEvent> {
|
public class CommandEventHandler implements EventHandler<CommandEvent> {
|
||||||
|
|
||||||
private final CommandProcessor commandProcessor;
|
private final CommandProcessor commandProcessor;
|
||||||
|
|
||||||
public CommandEventHandler(CommandProcessor commandProcessor) {
|
public CommandEventHandler(CommandProcessor commandProcessor) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package ru.lionarius.impl.disruptor;
|
package ru.lionarius.impl.disruptor;
|
||||||
|
|
||||||
import com.lmax.disruptor.*;
|
import com.lmax.disruptor.BusySpinWaitStrategy;
|
||||||
import com.lmax.disruptor.dsl.Disruptor;
|
import com.lmax.disruptor.dsl.Disruptor;
|
||||||
import com.lmax.disruptor.dsl.ProducerType;
|
import com.lmax.disruptor.dsl.ProducerType;
|
||||||
import ru.lionarius.api.CurrencyExchange;
|
import ru.lionarius.api.CurrencyExchange;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import com.google.common.collect.ImmutableSet;
|
|||||||
import ru.lionarius.api.CurrencyExchange;
|
import ru.lionarius.api.CurrencyExchange;
|
||||||
import ru.lionarius.api.client.Client;
|
import ru.lionarius.api.client.Client;
|
||||||
import ru.lionarius.api.client.ClientRepository;
|
import ru.lionarius.api.client.ClientRepository;
|
||||||
import ru.lionarius.api.currency.Currency;
|
|
||||||
import ru.lionarius.api.currency.CurrencyPair;
|
import ru.lionarius.api.currency.CurrencyPair;
|
||||||
import ru.lionarius.api.order.Order;
|
import ru.lionarius.api.order.Order;
|
||||||
import ru.lionarius.api.order.OrderData;
|
import ru.lionarius.api.order.OrderData;
|
||||||
@@ -24,7 +23,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|||||||
public class PlainCurrencyExchange implements CurrencyExchange {
|
public class PlainCurrencyExchange implements CurrencyExchange {
|
||||||
private final ClientRepository clientRepository = new InMemoryClientRepository();
|
private final ClientRepository clientRepository = new InMemoryClientRepository();
|
||||||
private final Map<CurrencyPair, OrderBook> orderBooks;
|
private final Map<CurrencyPair, OrderBook> orderBooks;
|
||||||
|
|
||||||
private final ReadWriteLock lock = new ReentrantReadWriteLock();
|
private final ReadWriteLock lock = new ReentrantReadWriteLock();
|
||||||
|
|
||||||
private final Set<CurrencyPair> allowedPairs;
|
private final Set<CurrencyPair> allowedPairs;
|
||||||
@@ -67,7 +66,7 @@ public class PlainCurrencyExchange implements CurrencyExchange {
|
|||||||
|
|
||||||
if (!allowedPairs.contains(pair))
|
if (!allowedPairs.contains(pair))
|
||||||
throw new IllegalArgumentException("Pair is not allowed");
|
throw new IllegalArgumentException("Pair is not allowed");
|
||||||
|
|
||||||
lock.writeLock().lock();
|
lock.writeLock().lock();
|
||||||
try {
|
try {
|
||||||
var orders = clientRepository.getClientOrders(clientId).orElseThrow();
|
var orders = clientRepository.getClientOrders(clientId).orElseThrow();
|
||||||
|
|||||||
@@ -1,20 +1,8 @@
|
|||||||
package ru.lionarius.impl.queue;
|
package ru.lionarius.impl.queue;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import ru.lionarius.api.command.Command;
|
||||||
import com.google.common.collect.ImmutableSet;
|
|
||||||
import ru.lionarius.api.client.ClientRepository;
|
|
||||||
import ru.lionarius.api.command.*;
|
|
||||||
import ru.lionarius.api.currency.CurrencyPair;
|
|
||||||
import ru.lionarius.api.order.Order;
|
|
||||||
import ru.lionarius.api.order.OrderData;
|
|
||||||
import ru.lionarius.api.order.message.OrderClosedMessage;
|
|
||||||
import ru.lionarius.impl.CommandProcessor;
|
import ru.lionarius.impl.CommandProcessor;
|
||||||
import ru.lionarius.impl.InMemoryClientRepository;
|
|
||||||
import ru.lionarius.impl.OrderBook;
|
|
||||||
|
|
||||||
import java.util.AbstractMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
|
|
||||||
public class CommandProcessorTask implements Runnable {
|
public class CommandProcessorTask implements Runnable {
|
||||||
|
|||||||
@@ -15,10 +15,12 @@ import java.util.UUID;
|
|||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
public abstract class ConcurrentCurrencyExchangeTest {
|
public abstract class ConcurrentCurrencyExchangeTest {
|
||||||
protected abstract CurrencyExchange createExchange(Set<CurrencyPair> pairs);
|
protected abstract CurrencyExchange createExchange(Set<CurrencyPair> pairs);
|
||||||
|
|
||||||
protected abstract void shutdownExchange(CurrencyExchange exchange);
|
protected abstract void shutdownExchange(CurrencyExchange exchange);
|
||||||
|
|
||||||
private CurrencyExchange exchange;
|
private CurrencyExchange exchange;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import ru.lionarius.api.CurrencyExchange;
|
|||||||
import ru.lionarius.api.currency.CurrencyPair;
|
import ru.lionarius.api.currency.CurrencyPair;
|
||||||
import ru.lionarius.impl.plain.PlainCurrencyExchange;
|
import ru.lionarius.impl.plain.PlainCurrencyExchange;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Set;
|
||||||
|
|
||||||
class ConcurrentPlainCurrencyExchangeTest extends ConcurrentCurrencyExchangeTest {
|
class ConcurrentPlainCurrencyExchangeTest extends ConcurrentCurrencyExchangeTest {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
|||||||
|
|
||||||
public abstract class CurrencyExchangeTest {
|
public abstract class CurrencyExchangeTest {
|
||||||
protected abstract CurrencyExchange createExchange(Set<CurrencyPair> pairs);
|
protected abstract CurrencyExchange createExchange(Set<CurrencyPair> pairs);
|
||||||
|
|
||||||
protected abstract void shutdownExchange(CurrencyExchange exchange);
|
protected abstract void shutdownExchange(CurrencyExchange exchange);
|
||||||
|
|
||||||
private CurrencyExchange exchange;
|
private CurrencyExchange exchange;
|
||||||
|
|||||||
Reference in New Issue
Block a user