Изменение домена с rosetta-im.com на rosetta.im
This commit is contained in:
210
src/main/java/im/rosetta/Boot.java
Normal file
210
src/main/java/im/rosetta/Boot.java
Normal file
@@ -0,0 +1,210 @@
|
||||
package im.rosetta;
|
||||
|
||||
import im.rosetta.client.ClientManager;
|
||||
import im.rosetta.client.OnlineManager;
|
||||
import im.rosetta.event.EventManager;
|
||||
import im.rosetta.executors.Executor0Handshake;
|
||||
import im.rosetta.executors.Executor10RequestUpdate;
|
||||
import im.rosetta.executors.Executor11Typeing;
|
||||
import im.rosetta.executors.Executor15RequestTransport;
|
||||
import im.rosetta.executors.Executor16PushNotification;
|
||||
import im.rosetta.executors.Executor17GroupCreate;
|
||||
import im.rosetta.executors.Executor18GroupInfo;
|
||||
import im.rosetta.executors.Executor19GroupInviteInfo;
|
||||
import im.rosetta.executors.Executor1UserInfo;
|
||||
import im.rosetta.executors.Executor20GroupJoin;
|
||||
import im.rosetta.executors.Executor21GroupLeave;
|
||||
import im.rosetta.executors.Executor22GroupBan;
|
||||
import im.rosetta.executors.Executor24DeviceResolve;
|
||||
import im.rosetta.executors.Executor3Search;
|
||||
import im.rosetta.executors.Executor4OnlineState;
|
||||
import im.rosetta.executors.Executor6Message;
|
||||
import im.rosetta.executors.Executor7Read;
|
||||
import im.rosetta.listeners.DeviceListListener;
|
||||
import im.rosetta.listeners.HandshakeCompleteListener;
|
||||
import im.rosetta.listeners.OnlineStatusDisconnectListener;
|
||||
import im.rosetta.listeners.OnlineStatusHandshakeCompleteListener;
|
||||
import im.rosetta.listeners.ServerStopListener;
|
||||
import im.rosetta.logger.Logger;
|
||||
import im.rosetta.logger.enums.Color;
|
||||
import im.rosetta.logger.enums.LogLevel;
|
||||
import im.rosetta.packet.Packet0Handshake;
|
||||
import im.rosetta.packet.Packet10RequestUpdate;
|
||||
import im.rosetta.packet.Packet11Typeing;
|
||||
import im.rosetta.packet.Packet15RequestTransport;
|
||||
import im.rosetta.packet.Packet16PushNotification;
|
||||
import im.rosetta.packet.Packet17GroupCreate;
|
||||
import im.rosetta.packet.Packet18GroupInfo;
|
||||
import im.rosetta.packet.Packet19GroupInviteInfo;
|
||||
import im.rosetta.packet.Packet1UserInfo;
|
||||
import im.rosetta.packet.Packet20GroupJoin;
|
||||
import im.rosetta.packet.Packet21GroupLeave;
|
||||
import im.rosetta.packet.Packet22GroupBan;
|
||||
import im.rosetta.packet.Packet23DeviceList;
|
||||
import im.rosetta.packet.Packet24DeviceResolve;
|
||||
import im.rosetta.packet.Packet2Result;
|
||||
import im.rosetta.packet.Packet3Search;
|
||||
import im.rosetta.packet.Packet4OnlineSubscribe;
|
||||
import im.rosetta.packet.Packet5OnlineState;
|
||||
import im.rosetta.packet.Packet6Message;
|
||||
import im.rosetta.packet.Packet7Read;
|
||||
import im.rosetta.packet.Packet8Delivery;
|
||||
import im.rosetta.packet.Packet9DeviceNew;
|
||||
|
||||
import io.orprotocol.Server;
|
||||
import io.orprotocol.Settings;
|
||||
import io.orprotocol.packet.PacketManager;
|
||||
|
||||
/**
|
||||
* Boot отвечает за инициализацию всех пакетов и их обработчиков,
|
||||
* а так же событий приложения. Этот Boot отвечает за приложение, а не за протокол.
|
||||
*
|
||||
* Нужен он для того, чтобы все части приложения получали одинаковые ссылки на глобальные обьекты приложения, такие как менеджер пакетов,
|
||||
* менеджер событий, менеджер клиентов и так далее
|
||||
*/
|
||||
public class Boot {
|
||||
|
||||
private PacketManager packetManager;
|
||||
private EventManager eventManager;
|
||||
private Logger logger;
|
||||
private Server server;
|
||||
private ServerAdapter serverAdapter;
|
||||
private ClientManager clientManager;
|
||||
private OnlineManager onlineManager;
|
||||
|
||||
/**
|
||||
* Конструктор по умолчанию, использует порт 3000 для сервера
|
||||
*/
|
||||
public Boot() {
|
||||
this(3000);
|
||||
}
|
||||
|
||||
/**
|
||||
* Инициализатор приложения
|
||||
* @param port Порт, на котором будет работать сервер. Если не указан, то будет использован порт 3000
|
||||
*/
|
||||
public Boot(int port) {
|
||||
this.packetManager = new PacketManager();
|
||||
this.eventManager = new EventManager();
|
||||
this.onlineManager = new OnlineManager();
|
||||
this.logger = new Logger(LogLevel.INFO);
|
||||
this.serverAdapter = new ServerAdapter(this.eventManager);
|
||||
this.server = new Server(new Settings(
|
||||
port,
|
||||
30
|
||||
), packetManager, this.serverAdapter);
|
||||
this.clientManager = new ClientManager(server);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить менеджер пакетов приложения
|
||||
* @return PacketManager
|
||||
*/
|
||||
public PacketManager getPacketManager() {
|
||||
return this.packetManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить менеджер событий приложения
|
||||
* @return EventManager
|
||||
*/
|
||||
public EventManager getEventManager() {
|
||||
return this.eventManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить менеджера клиентов, нужно для того чтобы отправить пакет списку клиентов например
|
||||
* @return менеджер клиентов
|
||||
*/
|
||||
public ClientManager getClientManager() {
|
||||
return this.clientManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить логгер приложения
|
||||
* @return Logger
|
||||
*/
|
||||
public Logger getLogger() {
|
||||
return this.logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Запуск сервера, регистрация пакетов, обработчиков, событий приложения
|
||||
* @return Boot
|
||||
*/
|
||||
public Boot bootstrap() {
|
||||
try{
|
||||
this.server.start();
|
||||
this.registerAllPackets();
|
||||
this.registerAllExecutors();
|
||||
this.registerAllEvents();
|
||||
this.printBootMessage();
|
||||
return this;
|
||||
}catch(Exception e){
|
||||
this.logger.error(Color.RED + "Booting error, stack trace:");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void registerAllEvents() {
|
||||
this.eventManager.registerListener(new ServerStopListener(this.logger));
|
||||
this.eventManager.registerListener(new HandshakeCompleteListener());
|
||||
this.eventManager.registerListener(new OnlineStatusHandshakeCompleteListener(this.onlineManager));
|
||||
this.eventManager.registerListener(new OnlineStatusDisconnectListener(this.onlineManager));
|
||||
this.eventManager.registerListener(new DeviceListListener(this.clientManager));
|
||||
}
|
||||
|
||||
private void registerAllPackets() {
|
||||
this.packetManager.registerPacket(0, Packet0Handshake.class);
|
||||
this.packetManager.registerPacket(1, Packet1UserInfo.class);
|
||||
this.packetManager.registerPacket(2, Packet2Result.class);
|
||||
this.packetManager.registerPacket(3, Packet3Search.class);
|
||||
this.packetManager.registerPacket(4, Packet4OnlineSubscribe.class);
|
||||
this.packetManager.registerPacket(5, Packet5OnlineState.class);
|
||||
this.packetManager.registerPacket(6, Packet6Message.class);
|
||||
this.packetManager.registerPacket(7, Packet7Read.class);
|
||||
this.packetManager.registerPacket(8, Packet8Delivery.class);
|
||||
this.packetManager.registerPacket(9, Packet9DeviceNew.class);
|
||||
this.packetManager.registerPacket(10, Packet10RequestUpdate.class);
|
||||
this.packetManager.registerPacket(11, Packet11Typeing.class);
|
||||
//RESERVED 12 PACKET AVATAR (unused)
|
||||
//RESERVED 13 PACKET KERNEL UPDATE (unused)
|
||||
//RESERVED 14 PACKET APP UPDATE (unused)
|
||||
this.packetManager.registerPacket(15, Packet15RequestTransport.class);
|
||||
this.packetManager.registerPacket(16, Packet16PushNotification.class);
|
||||
this.packetManager.registerPacket(17, Packet17GroupCreate.class);
|
||||
this.packetManager.registerPacket(18, Packet18GroupInfo.class);
|
||||
this.packetManager.registerPacket(19, Packet19GroupInviteInfo.class);
|
||||
this.packetManager.registerPacket(20, Packet20GroupJoin.class);
|
||||
this.packetManager.registerPacket(21, Packet21GroupLeave.class);
|
||||
this.packetManager.registerPacket(22, Packet22GroupBan.class);
|
||||
this.packetManager.registerPacket(23, Packet23DeviceList.class);
|
||||
this.packetManager.registerPacket(24, Packet24DeviceResolve.class);
|
||||
}
|
||||
|
||||
private void registerAllExecutors() {
|
||||
this.packetManager.registerExecutor(0, new Executor0Handshake(this.eventManager, this.clientManager, this.packetManager));
|
||||
this.packetManager.registerExecutor(1, new Executor1UserInfo());
|
||||
this.packetManager.registerExecutor(3, new Executor3Search(this.clientManager));
|
||||
this.packetManager.registerExecutor(4, new Executor4OnlineState(this.onlineManager, this.clientManager));
|
||||
this.packetManager.registerExecutor(6, new Executor6Message(this.clientManager, this.packetManager));
|
||||
this.packetManager.registerExecutor(7, new Executor7Read(this.clientManager, this.packetManager));
|
||||
this.packetManager.registerExecutor(10, new Executor10RequestUpdate());
|
||||
this.packetManager.registerExecutor(11, new Executor11Typeing(this.clientManager, this.packetManager));
|
||||
this.packetManager.registerExecutor(15, new Executor15RequestTransport());
|
||||
this.packetManager.registerExecutor(16, new Executor16PushNotification());
|
||||
this.packetManager.registerExecutor(17, new Executor17GroupCreate());
|
||||
this.packetManager.registerExecutor(18, new Executor18GroupInfo());
|
||||
this.packetManager.registerExecutor(19, new Executor19GroupInviteInfo());
|
||||
this.packetManager.registerExecutor(20, new Executor20GroupJoin());
|
||||
this.packetManager.registerExecutor(21, new Executor21GroupLeave());
|
||||
this.packetManager.registerExecutor(22, new Executor22GroupBan());
|
||||
this.packetManager.registerExecutor(24, new Executor24DeviceResolve(this.clientManager, this.eventManager));
|
||||
}
|
||||
|
||||
private void printBootMessage() {
|
||||
this.logger.log(LogLevel.INFO, Color.GREEN + "Boot successful complete");
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user