Updated broken links

Pedro Pombeiro 2018-10-08 16:52:32 +02:00
parent 027020c82b
commit 5283af397e
1 changed files with 11 additions and 11 deletions

@ -1,27 +1,27 @@
# Function calls
All `status-react` to `status-go` calls are centralized in [StatusModule](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java) (android) or [RCTStatus](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/ios/RCTStatus/RCTStatus.m#L97) (ios).
All `status-react` to `status-go` calls are centralized in [StatusModule](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java) (Android) or [RCTStatus](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/ios/RCTStatus/RCTStatus.m#L97) (iOS).
General structure of methods is:
* caller provides a callback
* check for availability of current Activity
* if available: call a static method on `StatusGo` via an ExecutorService (or sometimes a Thread) and use its result as callback payload
* else: ivoke callback with false as payload
* if available: call a static method on `StatusGo` via an `ExecutorService` (or sometimes a `Thread`) and use its result as callback payload
* else: invoke callback with `false` as payload
From RN perspective calls do not block, result is provided through callback execution.
StatusGo is a C library generated from go cade embeded in Status apps. On android it is packaged as a JNI `aar` (generated using [xgo](https://github.com/karalabe/xgo)).
StatusGo is a C library generated from Go side embedded in Status apps. On Android it is packaged as a JNI `aar` (generated using [xgo](https://github.com/karalabe/xgo)).
StatusGo directly expose `status-go` methods marked for exportation.
Those methods are defined in [cmd/statusd/library.go](https://github.com/status-im/status-go/blob/develop/cmd/statusd/library.go) and marked as `export`.
`go` side calls are then dispatched to [geth/api](https://github.com/status-im/status-go/blob/develop/geth/api/api.go#L172) then [geth/jail](https://github.com/status-im/status-go/blob/develop/geth/jail/jail.go#L213)
StatusGo directly exposes `status-go` methods marked for exportation.
Those methods are defined in [lib/library.go](https://github.com/status-im/status-go/blob/develop/lib/library.go) and marked as `export`.
`go` side calls are then dispatched to [api/backend.go](https://github.com/status-im/status-go/blob/develop/api/backend.go).
Data is provided to the go layer as primitive types and retieved RN side as JSON.
Data is provided to the Go layer as primitive types and retrieved RN side as JSON.
# Events
`status-go` can directly [send events](https://github.com/status-im/status-go/blob/develop/geth/node/signals.go#L65) that will be received RN side. It achieves that by directly calling [signal-event](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusService.java#L51) using some [JNI glue](https://github.com/status-im/status-go/blob/develop/geth/node/signals.c#L173).
`status-go` can directly [send events](https://github.com/status-im/status-go/blob/develop/geth/node/signals.go#L65) that will be received RN side. It achieves that by directly calling [signal-event](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusService.java#L55) using some [JNI glue](https://github.com/status-im/status-go/blob/develop/signal/signals.c#L176).
StatusModule is also used as a react context [listener](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java#L68) that [emits](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java#L105) event to the RN layer.
`StatusModule` is also used as a react context [listener](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java#L60) that [emits](https://github.com/status-im/status-react/blob/develop/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java#L111) events to the RN layer.
`status-react` listens to those events via [gethEvent](https://github.com/status-im/status-react/blob/develop/src/status_im/components/status.cljs#L60) then dispatched by a [re-frame handler](https://github.com/status-im/status-react/blob/develop/src/status_im/handlers.cljs#L155).
`status-react` listens to those events via [gethEvent](https://github.com/status-im/status-react/blob/develop/src/status_im/native_module/impl/module.cljs#L54) then dispatched by a [re-frame handler](https://github.com/status-im/status-react/blob/develop/src/status_im/handlers.cljs#L155).