package org.opendc.common.utils import java.io.File import java.net.URI import java.net.http.* import java.net.http.HttpResponse.BodyHandlers.ofString /** * Singleton class representing the real datacenter client. * The client is asynchronous and initiates the connection first. * * @constructor Initiates the connection. * * @author Mateusz Kwiatkowski */ public class HTTPClient private constructor() { public companion object { private var instance: HTTPClient? = null private var client: HttpClient? = null private var handshake = HttpRequest.newBuilder() .uri(URI.create("http://localhost:8080/")) .build() public fun getInstance(): HTTPClient? { if (instance == null) { try { client = HttpClient.newBuilder().build() val response = client?.send(handshake, ofString()) check(response?.statusCode() == 200) } catch (e: IllegalStateException) { println("${e.message}") } instance = HTTPClient() } return instance } } // TODO: this class must send the experiment JSON file to the digital twin public fun sendExperiment(experiment: File) { val body : HttpRequest.BodyPublisher val request = HttpRequest.newBuilder() .uri(URI.create("http://localhost:8080/")) .header("Content-type", "application/json") // TODO: this is obviously wrong, find an efficient way to send JSON over network .POST(HttpRequest.BodyPublishers.ofString(experiment)) .build() println("Haha") } }