Updated Usage Patterns (markdown)

Ivan Tomilov 2017-09-20 18:51:22 +03:00
parent 5f76c412e5
commit 5d10be7767
1 changed files with 34 additions and 1 deletions

@ -10,3 +10,36 @@ This page serves as a place with a collection of random facts about how status-r
2) webviews: among other things Status is dapp browser, so users can run dapps in the webview and we inject web3 object into webview in order to make this happen. We dont have control over code inside this env, its third party. All calls to web3 inside webview are passed to CallRPC as well
3) jail (otto vm): we are using this env in order to allow third party to define commands and different bots behaviour in chat. Calls to web3 are handled internally on go side, so we dont use CallRPC at least from status-react side here. Ans again, code is written by third parties, except our own bots
4) JNI signals: https://github.com/status-im/status-go/wiki/Notes-on-Bindings
## What are Send and SendAsync?
![](https://i.imgur.com/Ov1Y0H4.png)
The source:
```
Consumer->Go Bindings: Call
Go Bindings->statusAPI: JailCall
statusAPI->Jail: Call
Jail->JailCell: Call
note right of JailCell: cell.Lock()
JailCell->Otto: Call
Otto->+web3: eth_whateverWithoutCallback
web3->jail: Send
note left of jail: cell.Unlock()
note over jail: RPC calls and VM interactions
note left of jail: cell.Lock()
web3-->-Otto: result
note right of JailCell: cell.Unlock()
Consumer->Go Bindings: Call
Go Bindings->statusAPI: JailCall
statusAPI->Jail: Call
Jail->JailCell: Call
note right of JailCell: cell.Lock()
JailCell->Otto: Call
Otto->+web3: eth_whateverWithCallback
web3->jail: SendAsync
web3-->-Otto: otto.UndefinedValue()
note right of JailCell: cell.Unlock()
note over jail: RPC calls and VM interactions
```