/*********************************************************************************** * Copyright (c) 2015 /// Project SWG /// www.projectswg.com * * * * ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on * * July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies. * * Our goal is to create an emulator which will provide a server for players to * * continue playing a game similar to the one they used to play. We are basing * * it on the final publish of the game prior to end-game events. * * * * This file is part of Holocore. * * * * -------------------------------------------------------------------------------- * * * * Holocore is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * * published by the Free Software Foundation, either version 3 of the * * License, or (at your option) any later version. * * * * Holocore is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Affero General Public License for more details. * * * * You should have received a copy of the GNU Affero General Public License * * along with Holocore. If not, see . * * * ***********************************************************************************/ package com.projectswg.lightspeed_frontend.communication; import java.net.InetSocketAddress; import java.util.concurrent.atomic.AtomicBoolean; import com.projectswg.common.debug.Assert; import com.projectswg.common.network.packets.Packet; public class FrontendCommunication { private final AtomicBoolean running; private ResponseCallback callback; private InetSocketAddress address; public FrontendCommunication() { running = new AtomicBoolean(false); callback = null; address = null; } public void setCallback(ResponseCallback callback) { this.callback = callback; } public void setAddress(InetSocketAddress address) { this.address = address; } public boolean start() { if (running.getAndSet(true)) { Assert.fail(); return false; } return true; } public boolean stop() { if (!running.getAndSet(false)) { Assert.fail(); return false; } return true; } public Packet send(Packet packet) { Packet response = HttpClient.requestPacket(address, packet); if (response != null && callback != null) callback.onPacket(response); return response; } public interface ResponseCallback { void onPacket(Packet packet); } }