libp2p / libp2p/go-libp2p-daemon

Concurrency models to support with native language bindings

Open
#52 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
95
Forks
41
PR merge metrics
No merged PRs in 30d

Description

Opening this issue to continue the discussion we started regarding what concurrency models that should be supported when targeting language level bindings.

### Asynchronous Model
Concurrency handled on the Go client side. Async calls from Java/Python/C etc that require a response are tracked with an id. There are two ways we could handle this:
1) Java/Python/C could poll the Go client until the matching response id is returned
2) Java/Python/C could provide a function pointer and the Go client could issue a callback when the response is ready.

> I prefer option 2 here

### Synchronous Model
There might be cases where we want to provide a synchronous mode of interaction. This might be useful for simulations where we want things to happen during each timestep for the purpose of research and reporting the health of the network given different simulated pathological scenarios.

> Just a thought. I am curious what you guys think

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or concrete entry points; begin by locating the Go daemon's existing native-language binding API and request/response handling. The concurrency model still needs agreement on polling versus callbacks and whether synchronous operation is required, after which the agreed behavior can be implemented and tested.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, go, java, python
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.