syntax = "proto3";

package pragma.gameinstance;

import "pragma/types.proto";
import "pragmaOptions.proto";
import "shared/gameInstanceExt.proto";

option (pragma.unreal_namespace) = "GameFabricGameInstance";

enum PingProtocol {
  UNKNOWN = 0;
  ICMP = 1;
  UDP = 2;
  WSS = 3;
}

message PingServer {
  PingProtocol protocol = 1;
  string address = 2;
}

message PingRegion {
  string game_server_zone = 1;
  repeated PingServer servers = 2;
}

message GameServerAllocationData {
  pragma.Fixed128 game_instance_id = 1;
  pragma.gameinstance.ExtAllocateGameServer ext = 2;
  string game_server_version = 3;
  string game_server_zone = 4;
}

message HttpResponseData {
  int32 response_code = 1;
  string response_desc = 2;
  string response_body = 3;
}

message GameServerAllocationApplicationError {
  option (pragma.force_include_type) = true;
  string message = 1;
  GameServerAllocationData allocation_data = 2;
  HttpResponseData http_response_data = 3;
}
