module grpc.core;
import std.string : fromStringz;
import interop.headers;
public import grpc.core.core;

template assertNotReady() {
    bool assertNotReady = () { assert(grpcReady(), "Assertion: gRPC has not been initialized"); return true; }();
}
    

bool grpcReady() {
    if(grpc_is_initialized() == true) {
        return true;
    }

    return false;
}

void init() {
	grpc_init();
	assert(grpc_is_initialized(), "failed to intiialize gRPC");
}

void shutdown() {
    grpc_shutdown_blocking();
}

string g_stands_for() {
	auto g = grpc_g_stands_for();
	return g.fromStringz.dup;
}

string version_string() {
	auto g = grpc_version_string();
	return g.fromStringz.dup;
}