Skip to content

module : sdk.concurrency_manager

Link to GitHub

Entities:

  1. ConcurrencyManager

Class ConcurrencyManager

extends: -

is extended by: -

description

ConcurrencyManager provides a mechanism for managing the concurrency of service calls in the SDK. It ensures that only a certain number of concurrent calls are made and handles the retrieval and management of tokens for making service calls.

attributes

  • __concurrent_calls (int): The number of concurrent calls allowed.
  • __token (str): The token used for concurrent calls.
  • __planned_amount (int): The planned amount for the payment.
  • __used_amount (int): The amount used for the payment.

methods

__init__

Initializes a new instance of the class.

args:
  • concurrent_calls (int): The number of concurrent calls allowed.
returns:
  • None

concurrent_calls

decorator: @property

Returns the number of concurrent calls allowed.

returns:
  • The number of concurrent calls allowed. (int)

get_token

Retrieves a token for making service calls.

args:
  • service_client (ServiceClient): The service client instance.
  • channel (PaymentChannel): The payment channel instance.
  • service_call_price (int): The price of a service call.
returns:
  • The token for making service calls. (str)

__get_token

Retrieves a token for a service call.

args:
  • service_client (ServiceClient): The service client instance.
  • channel (PaymentChannel): The payment channel instance.
  • service_call_price (int): The price of a service call.
  • new_token (bool): Whether is needed a new token. Defaults to False.
returns:
  • The token for the service call. (str)
raises:
  • grpc.RpcError: If an error occurs while retrieving the token.

__get_stub_for_get_token

Retrieves the gRPC service stub for the TokenServiceStub.

args:
  • service_client (ServiceClient): The service client instance.
returns:
  • The gRPC service stub for the TokenServiceStub. (ServiceStub)

__get_token_for_amount

Retrieves a token for a given amount from the token service.

This function retrieves a token for a given amount from the token service. It first retrieves the nonce from the channel state, then it creates a stub for the token service using the get_stub_for_get_token method. It then imports the token_service_pb2 module and retrieves the current block number from the service client's SDK web3 instance. It generates a message using the solidity_keccak method from the web3.Web3 class and generates signatures using the generate_signature method from the service client. It creates a TokenRequest object with the necessary parameters and sends it to the token service using the GetToken method of the stub. Finally, it returns the token reply object containing the token.

args:
  • service_client (ServiceClient): The service client instance.
  • channel (PaymentChannel): The payment channel instance.
  • amount (int): The amount for which the token is requested.
returns:
  • The token reply object containing the token. (Any)

record_successful_call

Increments the __used_amount attribute by 1 to record a successful call.

returns:
  • None