blob: 3ce704185b58969449e94a83019314e5f56c9fb6 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
defmodule Fluss.ServerNode do
@moduledoc """
A node in the Fluss cluster — either a coordinator or a tablet server.
Returned by `Fluss.Admin.get_server_nodes/1`.
"""
@enforce_keys [:id, :uid, :host, :port, :server_type]
defstruct [:id, :uid, :host, :port, :server_type]
@type t :: %__MODULE__{
id: integer(),
uid: String.t(),
host: String.t(),
port: non_neg_integer(),
server_type: :tablet_server | :coordinator_server | :unknown
}
@spec url(t()) :: String.t()
def url(%__MODULE__{host: host, port: port}), do: "#{host}:#{port}"
end