25 Commits

Author SHA1 Message Date
Eric Mastro
24ad3fdea9
[statemachine] add additional tests
- test for multiple source states
- test for not allowing transition to self
2023-02-22 14:46:10 +11:00
Eric Mastro
c80e3e5e2c
[statemachine] fix allowance of multiple source states 2023-02-21 17:21:23 +11:00
Eric Mastro
b220f4198a
[statemachine] allow multiple source states in Transition
- multiple source states allowed in transition removed need for boilerplate subscription handling

TODO:
1. fix compilation for multiple transition source states
2. add tests for:
  - no transitioning to self
  - multiple source states in transition
3. Check how CancelledError gets caught in future callback
4. Remove Future[?State] from run return type?
2023-02-21 17:21:23 +11:00
Eric Mastro
8defc00bb0
[statemachine] WIP switch to declarative machine
- restoring and not restoring state both use the same setup for SalesAgent, by setting the SalesAgent’s state during instantiation, allowing it to react according to its state
- remove returning of next State from run (actual types yet to be changed)
- subscribe to onchain events, and use TransitionProperties to react (TODO: do not react from AnyState, but set to only states that make sense)
- create setError method in asyncstatemachine that handles setting of error properties
2023-02-21 17:21:23 +11:00
Eric Mastro
1a89c11d2c
[statemachine] properly prevent transition when clearing error 2023-02-21 17:21:23 +11:00
Eric Mastro
87db051ab2
[statemachine] add AnyState, support transition trigger from any state 2023-02-21 17:21:22 +11:00
Eric Mastro
ea80387137
[statemachine] capture triggerable exceptions 2023-02-21 17:21:22 +11:00
Eric Mastro
e651056701
[statemachine] cleanup 2023-02-21 17:21:22 +11:00
Eric Mastro
ad9f5a4d51
[statemachine] check declared transitions after state change
- check declared transitions after state change
- make `Event` and `transition` public to enable external usage
- add exported machine.state proc
- add tests for machine.state
- add test TODO for not being able to check exception in run
- add test for checking declarative transitions after state transition
- remove onMoveToNextStateEvent as it was too confusing. Easier to read `Event.transition(state2, state3)`
2023-02-21 17:21:22 +11:00
Eric Mastro
0eacbea850
[statemachine] add additional tests for declarations 2023-02-21 17:21:22 +11:00
Eric Mastro
127adc0b8a
[statemachine] initial steps for declarative transitions
# Conflicts:
#	codex/utils/asyncstatemachine.nim
2023-02-21 17:21:22 +11:00
Mark Spanbroek
2035568b88
WIP switch to new statemachine model
Heavy work in progress, doesn't even compile yet,
this commit will be replaced by new cleaned up small commits

- callbacks are sync again
- agent.start(slots) is replaced by new state SaleStart
- disables explicit state transition tests for now; need to be replaced
2023-02-21 17:21:21 +11:00
Mark Spanbroek
59395d9bbd
[statemachine] adds a statemachine for async workflows
Allows events to be scheduled synchronously.

See https://github.com/status-im/nim-codex/pull/344

Co-Authored-By: Ben Bierens <thatbenbierens@gmail.com>
Co-Authored-By: Eric Mastro <eric.mastro@gmail.com>
2023-02-21 17:21:21 +11:00
Eric Mastro
0957c9adfa
PR comments
- add slotIndex to `SalesAgent` constructor
- remove `SalesAgent.init`
- rename `SalesAgent.init` to `start` and `SalesAgent.deinit` to `stop`.
- rename `SalesAgent. populateRequest` to `SalesAgent.retreiveRequest`.
- move availability removal to the downloading state. once availability is persisted to disk, it should survive node restarts.
-
2023-02-14 13:47:51 +01:00
Eric Mastro
e8f87e3f52
[marketplace] fix ci issue with chronicles output 2023-02-14 13:47:51 +01:00
Eric Mastro
579da07ca6
[marketplace] sales state machine tests 2023-02-14 13:47:51 +01:00
Eric Mastro
54173f1f1c
[marketplace] add async state machine
Allows for `enterAsync` to be cancelled.
2023-02-14 13:47:50 +01:00
Dmitriy Ryajov
0beeefd760
Repo limits (#319)
* initial implementation of repo store

* allow isManifest on multicodec

* rework with new blockstore

* add raw codec

* rework listBlocks

* remove fsstore

* reworking with repostore

* bump datastore

* fix listBlocks iterator

* adding store's common tests

* run common store tests

* remove fsstore backend tests

* bump datastore

* add `listBlocks` tests

* listBlocks filter based on block type

* disabling tests in need of rewriting

* allow passing block type

* move BlockNotFoundError definition

* fix tests

* increase default advertise loop sleep to 10 mins

* use `self`

* add cache quota functionality

* pass meta store and start repo

* add `CacheQuotaNamespace`

* pass meta store

* bump datastore to latest master

* don't use os `/` as key separator

* Added quota limits support

* tests for quota limits

* add block expiration key

* remove unnesesary space

* use idleAsync in listBlocks

* proper test name

* re-add contrlC try/except

* add storage quota and block ttl config options

* clarify comments

* change expires key format

* check for block presence before storing

* bump datastore

* use dht with fixed datastore `has`

* bump datastore to latest master

* bump dht to latest master
2022-12-02 18:00:55 -06:00
markspanbroek
be32b9619b
Fixes loading of private key on Windows (#299)
Unix permissions don't work on Windows; 
adds check for correct ACL settings in Windows.
2022-11-07 15:54:24 +01:00
Dmitriy Ryajov
0ecbfcec9f
setup and persist private key (#292)
* setup and persist private key

* return dht record spr

* helper to remap multiaddr ip and port

* set/update discovery and announce addrs

* add nat and discovery IPs

* allow for announce and DHT addresses separatelly

* update tests

* check for nat or discoveryIp

* fix integration tests

* misc align

* don't share data dirs and and set bootstrap node

* add log scope

* remap announceAddrs after node start

* simplify discovery initialization

* make nat and disc-ip required

* add log scope don't init dht spr in constructor

* bump dht

* dissallow `0.0.0.0` for `--nat`
2022-11-01 18:58:41 -06:00
Dmitriy Ryajov
e50ea88411
Remove protobuf serialization (#289)
* add format for cid

* cid formatIt change

* track nim-libp2p-unstable

* rework probuf serialization for por

* add missing include

* removing nim protobuf serialization

* rollback to dht to main

* remove protobuf serialization import
2022-10-27 07:41:34 -06:00
Mark Spanbroek
7841a9692c [utils] Add AsyncState to state machine 2022-10-25 15:10:35 +11:00
Mark Spanbroek
b52d291785 [utils] Add state machine implementation 2022-10-25 15:10:35 +11:00
Mark Spanbroek
e648c26340 [utils] Add operator as for optional casting 2022-10-25 15:10:35 +11:00
Michael Bradley
209343087c
Change every dagger to codex (#102) 2022-05-19 13:56:03 -06:00