private void connectNewClients() { while (_numActiveClients == 0 && _newClients.size() == 0) { try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } for (String client : _newClients) { // StockExchangeBroker keyB = _brokers.firstKey(); // StockExchangeBroker broker=_brokers.get(keyB);; StockExchangeBroker broker = _brokers.pollFirst(); ; if (broker.getNumOfClients() == N) { _stockExchangeStompClient.send("/topic/Connected", "connectFailed " + client + "\n"); _numActiveClients++; } else { if (broker.getNumOfClients() == 0) _numActiveCBrokers++; broker.addClient(client); _stockExchangeStompClient.send( "/topic/cConnected", "connected " + client + " " + broker.getName() + "\n"); _stockExchangeStompClient.subscribe("/topic/cDeals-" + client, this); _numActiveClients++; } _brokers.add(broker); } _newClients.clear(); }
private void disconnectClient(String client) { for (Company company : _companies.values()) { StockOrder order = company.getBuyOrders().get(client); while (order != null) { // remove buy orders company.getBuyOrders().remove(client); order = company.getBuyOrders().get(client); } order = company.getSellOrders().get(client); while (order != null) { // sell buy orders company.getSellOrders().remove(client); order = company.getSellOrders().get(client); } } _numActiveClients--; for (StockExchangeBroker broker : _brokers) broker.removeClient(client); // //_brokers.get(_clients.get(client)).decClientNum(); TODO: // _clients.remove(client); _stockExchangeStompClient.unsubscribe("/topic/cDeals-" + client, this); _stockExchangeStompClient.send("/topic/cDisconnected", "disconnected " + client + "\n"); }