Module hyveos_sdk.services.kv

Classes

class DHTKey (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class DHTRecord (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class Data (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class KVService (conn: grpc.aio._base_channel.Channel)
Expand source code
class KVService:
    """
    A handle to the distributed key-value store service.

    Exposes methods to interact with the key-value store service,
    like for putting records into the key-value store or getting records from it.
    """

    def __init__(self, conn: Channel):
        self.stub = KVStub(conn)

    async def put_record(self, topic: str, key: str | bytes, value: str) -> None:
        """
        Puts a record into the key-value store.

        Parameters
        ----------
        topic : str
            The topic of the record
        key : str | bytes
            The key of the record
        value : str
            The value of the record
        """
        await self.stub.PutRecord(
            DHTRecord(
                key=DHTKey(topic=Topic(topic=topic), key=enc(key)),
                value=Data(data=enc(value)),
            )
        )

    async def get_record(self, topic: str, key: str | bytes) -> bytes | None:
        """
        Gets a record from the key-value store.

        Parameters
        ----------
        topic : str
            The topic of the record to retrieve
        key : str | bytes
            The key of the record to retrieve

        Returns
        -------
        value : bytes | None
            The value of the record or `None` if the record is not found
        """
        record = await self.stub.GetRecord(
            DHTKey(topic=Topic(topic=topic), key=enc(key))
        )
        if record.data is not None:
            return record.data.data
        else:
            return None

    async def remove_record(self, topic: str, key: str | bytes) -> None:
        """
        Removes a record from the key-value store.

        This only applies to the local node and only affects the network once the record expires.
        """
        await self.stub.RemoveRecord(DHTKey(topic=Topic(topic=topic), key=enc(key)))

A handle to the distributed key-value store service.

Exposes methods to interact with the key-value store service, like for putting records into the key-value store or getting records from it.

Methods

async def get_record(self, topic: str, key: str | bytes) ‑> bytes | None
Expand source code
async def get_record(self, topic: str, key: str | bytes) -> bytes | None:
    """
    Gets a record from the key-value store.

    Parameters
    ----------
    topic : str
        The topic of the record to retrieve
    key : str | bytes
        The key of the record to retrieve

    Returns
    -------
    value : bytes | None
        The value of the record or `None` if the record is not found
    """
    record = await self.stub.GetRecord(
        DHTKey(topic=Topic(topic=topic), key=enc(key))
    )
    if record.data is not None:
        return record.data.data
    else:
        return None

Gets a record from the key-value store.

Parameters

topic : str
The topic of the record to retrieve
key : str | bytes
The key of the record to retrieve

Returns

value : bytes | None
The value of the record or None if the record is not found
async def put_record(self, topic: str, key: str | bytes, value: str) ‑> None
Expand source code
async def put_record(self, topic: str, key: str | bytes, value: str) -> None:
    """
    Puts a record into the key-value store.

    Parameters
    ----------
    topic : str
        The topic of the record
    key : str | bytes
        The key of the record
    value : str
        The value of the record
    """
    await self.stub.PutRecord(
        DHTRecord(
            key=DHTKey(topic=Topic(topic=topic), key=enc(key)),
            value=Data(data=enc(value)),
        )
    )

Puts a record into the key-value store.

Parameters

topic : str
The topic of the record
key : str | bytes
The key of the record
value : str
The value of the record
async def remove_record(self, topic: str, key: str | bytes) ‑> None
Expand source code
async def remove_record(self, topic: str, key: str | bytes) -> None:
    """
    Removes a record from the key-value store.

    This only applies to the local node and only affects the network once the record expires.
    """
    await self.stub.RemoveRecord(DHTKey(topic=Topic(topic=topic), key=enc(key)))

Removes a record from the key-value store.

This only applies to the local node and only affects the network once the record expires.

class Topic (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR