# `Hyper.Grpc.Server`
[🔗](https://github.com/harmont-dev/hyper/blob/main/lib/hyper/grpc/server.ex#L1)

gRPC handler for `hyper.grpc.v0.Hyper`. A thin translation layer: each RPC
maps its request to a domain value via `Hyper.Grpc.Codec.from_grpc/1`, calls
the existing `Hyper` BEAM API, and maps the result back with
`Hyper.Grpc.Codec.to_grpc/1` (raising the `GRPC.RPCError` it returns on error).

# `create_vm`

```elixir
@spec create_vm(Hyper.Grpc.V0.CreateVmRequest.t(), GRPC.Server.Stream.t()) ::
  Hyper.Grpc.V0.CreateVmResponse.t()
```

# `fork_vm`

```elixir
@spec fork_vm(Hyper.Grpc.V0.ForkVmRequest.t(), GRPC.Server.Stream.t()) ::
  Hyper.Grpc.V0.ForkVmResponse.t()
```

# `get_vm`

```elixir
@spec get_vm(Hyper.Grpc.V0.GetVmRequest.t(), GRPC.Server.Stream.t()) ::
  Hyper.Grpc.V0.GetVmResponse.t()
```

# `get_vm_usage`

```elixir
@spec get_vm_usage(Hyper.Grpc.V0.GetVmUsageRequest.t(), GRPC.Server.Stream.t()) ::
  Hyper.Grpc.V0.GetVmUsageResponse.t()
```

# `list_vms`

```elixir
@spec list_vms(Google.Protobuf.Empty.t(), GRPC.Server.Stream.t()) ::
  Hyper.Grpc.V0.ListVmsResponse.t()
```

# `load_image`

```elixir
@spec load_image(Hyper.Grpc.V0.LoadImageRequest.t(), GRPC.Server.Stream.t()) ::
  Hyper.Grpc.V0.LoadImageResponse.t()
```

# `service_name`

# `stop_vm`

```elixir
@spec stop_vm(Hyper.Grpc.V0.StopVmRequest.t(), GRPC.Server.Stream.t()) ::
  Google.Protobuf.Empty.t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
