@@ -750,24 +750,50 @@ public void httpServerStop(FlecsServer server) {
750750 }
751751 }
752752
753+ public void processHttp (FlecsServer server , float deltaTime ) {
754+ this .checkClosed ();
755+ if (server != null && !server .getServerSegment ().equals (MemorySegment .NULL )) {
756+ flecs_h .ecs_http_server_dequeue (server .getServerSegment (), deltaTime );
757+ }
758+ }
759+
753760 public FlecsServer restServer (short port ) {
754761 this .checkClosed ();
755- try ( Arena tempArena = Arena . ofConfined ()) {
756- flecs_h .FlecsRestImport (this .nativeWorld );
757- MemorySegment desc = ecs_http_server_desc_t . allocate ( tempArena );
758- ecs_http_server_desc_t . port ( desc , port );
759- MemorySegment server = flecs_h .ecs_rest_server_init (this .nativeWorld , desc );
760- if ( server . equals ( MemorySegment . NULL )) {
761- throw new IllegalStateException ( "Failed to start REST server on port " + port );
762- }
762+ flecs_h . FlecsDocImport ( this . nativeWorld );
763+ flecs_h .FlecsStatsImport (this .nativeWorld );
764+ flecs_h . FlecsMetricsImport ( this . nativeWorld );
765+ flecs_h . FlecsWorldMonitorImport ( this . nativeWorld );
766+ flecs_h .FlecsSystemMonitorImport (this .nativeWorld );
767+ flecs_h . FlecsPipelineMonitorImport ( this . nativeWorld );
768+ flecs_h . FlecsAlertsImport ( this . nativeWorld );
769+ flecs_h . FlecsRestImport ( this . nativeWorld );
763770
764- return new FlecsServer (server );
771+ flecs_h .ecs_set_entity_range (this .nativeWorld , 0 , 0 );
772+
773+ MemorySegment desc = ecs_http_server_desc_t .allocate (this .arena );
774+ desc .fill ((byte ) 0 );
775+ ecs_http_server_desc_t .port (desc , port );
776+
777+ MemorySegment server = flecs_h .ecs_rest_server_init (this .nativeWorld , desc );
778+ if (server == null || server .equals (MemorySegment .NULL )) {
779+ throw new IllegalStateException ("Failed to initialize REST server" );
765780 }
781+
782+ int result = flecs_h .ecs_http_server_start (server );
783+ if (result != 0 ) {
784+ flecs_h .ecs_http_server_fini (server );
785+ throw new IllegalStateException ("Failed to start REST server on port " + port );
786+ }
787+
788+ System .out .println ("REST server started on http://localhost:" + port );
789+
790+ return new FlecsServer (server );
766791 }
767792
768793 public void restServerStop (FlecsServer server ) {
769794 this .checkClosed ();
770795 if (server != null && !server .getServerSegment ().equals (MemorySegment .NULL )) {
796+ flecs_h .ecs_http_server_stop (server .getServerSegment ());
771797 flecs_h .ecs_rest_server_fini (server .getServerSegment ());
772798 }
773799 }
0 commit comments