Skip to content

Commit

Permalink
fix test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
andrew-delph committed Oct 12, 2023
1 parent 328913a commit e8215a5
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 61 deletions.
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{
"java.configuration.updateBuildConfiguration": "interactive"
"java.configuration.updateBuildConfiguration": "interactive",
"java.compile.nullAnalysis.mode": "automatic"
}
6 changes: 4 additions & 2 deletions core/src/core/common/GameSettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,17 @@ public GameSettings() {}
private Properties getDefaults() {
Properties defaults = new Properties();
defaults.setProperty(HOST_KEY, "https://solarsim.net");
defaults.setProperty(PORT_KEY, "99");
defaults.setProperty(PORT_KEY, "9999");
defaults.setProperty(IS_MATCHMAKER, "1");
return defaults;
}

public void load() {
if (properties != null) return;
properties = this.getDefaults();
File configFile = new File(System.getProperty("user.dir") + "/config.properties");
String configFilePath = System.getProperty("user.dir") + "/config.properties";
System.out.println("configFilePath: "+configFilePath);
File configFile = new File(configFilePath);
if (configFile.exists() && !configFile.isDirectory() && configFile.canRead()) {
try {
properties.load(new FileReader(configFile));
Expand Down
123 changes: 68 additions & 55 deletions core/src/core/networking/server/ServerNetworkHandle.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,34 +50,52 @@

public class ServerNetworkHandle extends NetworkObjectServiceGrpc.NetworkObjectServiceImplBase {

@Inject ObserverFactory observerFactory;
@Inject ConnectionStore connectionStore;
@Inject GameStore gameStore;
@Inject EventTypeFactory eventTypeFactory;
@Inject ActiveChunkManager activeChunkManager;
@Inject User user;
@Inject ChunkGenerationService chunkGenerationService;
@Inject GameSettings gameSettings;
@Inject PingService pingService;
@Inject SyncService syncService;
@Inject Clock clock;
@Inject GameController gameController;
@Inject EntityControllerFactory entityControllerFactory;
@Inject GroupService groupService;
@Inject ActiveEntityManager activeEntityManager;
@Inject Game game;
@Inject
ObserverFactory observerFactory;
@Inject
ConnectionStore connectionStore;
@Inject
GameStore gameStore;
@Inject
EventTypeFactory eventTypeFactory;
@Inject
ActiveChunkManager activeChunkManager;
@Inject
User user;
@Inject
ChunkGenerationService chunkGenerationService;
@Inject
GameSettings gameSettings;
@Inject
PingService pingService;
@Inject
SyncService syncService;
@Inject
Clock clock;
@Inject
GameController gameController;
@Inject
EntityControllerFactory entityControllerFactory;
@Inject
GroupService groupService;
@Inject
ActiveEntityManager activeEntityManager;
@Inject
Game game;
private Server server;

@Inject
public ServerNetworkHandle() {}
public ServerNetworkHandle() {
}

public void start() throws IOException {
Gdx.app.log(GameSettings.LOG_TAG, "I am server: " + this.user.toString());
server =
ServerBuilder.forPort(99)
.addService(this)
.addService(ProtoReflectionService.newInstance())
.build();
int port = gameSettings.getPort();
Gdx.app.log(GameSettings.LOG_TAG, "I am server: " + this.user.toString() + " port: " + port);

server = ServerBuilder.forPort(port)
.addService(this)
.addService(ProtoReflectionService.newInstance())
.build();
server.start();
pingService.start();
}
Expand All @@ -87,11 +105,10 @@ public StreamObserver<NetworkObjects.NetworkEvent> networkObjectStream(
StreamObserver<NetworkObjects.NetworkEvent> responseObserver) {
RequestNetworkEventObserver requestNetworkEventObserver = observerFactory.create();
requestNetworkEventObserver.responseObserver = responseObserver;
NetworkObjects.NetworkEvent authenticationEvent =
NetworkObjects.NetworkEvent.newBuilder()
.setEvent("authentication")
.setUser(user.getUserID().toString())
.build();
NetworkObjects.NetworkEvent authenticationEvent = NetworkObjects.NetworkEvent.newBuilder()
.setEvent("authentication")
.setUser(user.getUserID().toString())
.build();
requestNetworkEventObserver.responseObserver.onNext(authenticationEvent);
return requestNetworkEventObserver;
}
Expand Down Expand Up @@ -132,16 +149,15 @@ public void getEntity(

Entity returnEntity = null;
try {
returnEntity =
gameController.createEntity(
coordinates,
(entity -> {
entity.setEntityController(
entityControllerFactory.createRemoteBodyController(entity));

groupService.registerEntityGroup(entity.getUuid(), Group.PLAYER_GROUP);
activeEntityManager.registerActiveEntity(requestedUser, entity.getUuid());
}));
returnEntity = gameController.createEntity(
coordinates,
(entity -> {
entity.setEntityController(
entityControllerFactory.createRemoteBodyController(entity));

groupService.registerEntityGroup(entity.getUuid(), Group.PLAYER_GROUP);
activeEntityManager.registerActiveEntity(requestedUser, entity.getUuid());
}));
} catch (ChunkNotFound e) {
e.printStackTrace();
return;
Expand All @@ -159,19 +175,17 @@ public void health(Empty request, StreamObserver<NetworkObjects.Health> response
return;
}

NetworkObjects.STATUS serverStatus =
(connectionStore.size() > 0) ? STATUS.ACTIVE : STATUS.INACTIVE;
NetworkObjects.STATUS serverStatus = (connectionStore.size() > 0) ? STATUS.ACTIVE : STATUS.INACTIVE;

Instant now = Instant.now();

Duration upTime = Duration.between(game.gameStartTime, now);

NetworkObjects.Health.Builder healthDataBuilder =
NetworkObjects.Health.newBuilder()
.setId(this.user.getUserID().toString())
.setStatus(serverStatus)
.setUptime(upTime.toMillis())
.setConnections(connectionStore.size());
NetworkObjects.Health.Builder healthDataBuilder = NetworkObjects.Health.newBuilder()
.setId(this.user.getUserID().toString())
.setStatus(serverStatus)
.setUptime(upTime.toMillis())
.setConnections(connectionStore.size());

if (connectionStore.inactiveStartTime != null) {
Duration inActiveTime = Duration.between(connectionStore.inactiveStartTime, now);
Expand All @@ -184,8 +198,8 @@ public void health(Empty request, StreamObserver<NetworkObjects.Health> response

@Override
public void getVersion(Empty request, StreamObserver<Version> responseObserver) {
NetworkObjects.Version versionData =
NetworkObjects.Version.newBuilder().setVersion(gameSettings.getVersion()).build();
NetworkObjects.Version versionData = NetworkObjects.Version.newBuilder().setVersion(gameSettings.getVersion())
.build();
responseObserver.onNext(versionData);
responseObserver.onCompleted();
}
Expand All @@ -195,11 +209,10 @@ public void close() {
}

public synchronized void send(UserID userID, NetworkObjects.NetworkEvent networkEvent) {
networkEvent =
networkEvent.toBuilder()
.setUser(user.getUserID().toString())
.setTime(Clock.getCurrentTime())
.build();
networkEvent = networkEvent.toBuilder()
.setUser(user.getUserID().toString())
.setTime(Clock.getCurrentTime())
.build();
RequestNetworkEventObserver observer = connectionStore.getConnection(userID);
observer.responseObserver.onNext(networkEvent);
}
Expand All @@ -212,8 +225,8 @@ public synchronized void initHandshake(UserID userID, ChunkRange chunkRange) {
}
syncService.lockHandshake(userID, chunkRange, GameSettings.HANDSHAKE_TIMEOUT);
List<UUID> uuidList = new LinkedList<>(this.gameStore.getChunk(chunkRange).getEntityUUIDSet());
HandshakeOutgoingEventType handshakeOutgoing =
EventTypeFactory.createHandshakeOutgoingEventType(chunkRange, uuidList);
HandshakeOutgoingEventType handshakeOutgoing = EventTypeFactory.createHandshakeOutgoingEventType(chunkRange,
uuidList);
this.send(userID, handshakeOutgoing.toNetworkEvent());
Gdx.app.log(
GameSettings.LOG_TAG, "SERVER INIT HANDSHAKE " + userID.toString() + " " + chunkRange);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@ public void testTranslateCreateEntityEvent() throws SerializationDataMissing {
UUID uuid = UUID.randomUUID();

CreateAIEntityEventType outgoing = EventTypeFactory.createAIEntityEventType(coordinates, uuid);
CreateAIEntityEventType incoming =
NetworkDataDeserializer.createCreateAIEntityEventType(
NetworkDataSerializer.createCreateAIEntityEventType(outgoing));
CreateAIEntityEventType incoming = NetworkDataDeserializer.createCreateAIEntityEventType(
NetworkDataSerializer.createCreateAIEntityEventType(outgoing));

assert incoming.getTarget().equals(outgoing.getTarget());
assert incoming.getCoordinates().equals(outgoing.getCoordinates());
Expand Down

0 comments on commit e8215a5

Please sign in to comment.