111 lines
4.6 KiB
Markdown
111 lines
4.6 KiB
Markdown
# 1.0.0
|
|
|
|
# 0.9.7.2
|
|
|
|
- Add a parameter for the `runNopeBackend`-cli to select the default service provider selection method.
|
|
- Add a parameter for the `runNopeBackend`-cli to force using service provider selection everytime.
|
|
- Use check the `selector` during instance creation only, if there exists a specification.
|
|
- to prevent endless loops, the function `performCall` of the `dispatcher` now adds the option `preventSelector`
|
|
- fixing nodejs related `observable` issue.
|
|
- time-options for the `dispatcher` are now partial.
|
|
|
|
# 0.9.7.1
|
|
|
|
- If the Channel "event" is selected the "force-emitting" is enabled
|
|
|
|
# 0.9.7
|
|
|
|
- Adding a `selector`-function to select a specific executor on service-calls. This is only performed if there are multipe providers for a service
|
|
|
|
- > creating an instance is althoug a service
|
|
- To provide a specific `selector` use the following options at the `performCall`-method of the `dispatcher`:
|
|
|
|
```typescript
|
|
const instance = await dispatcher.generateInstance(
|
|
{
|
|
identifier: "instance01",
|
|
type: package_01.providedClasses[0].description.name,
|
|
params: [],
|
|
}, // Now we are able to provide a specific selector:
|
|
{
|
|
selector: "dispatcher", // <= This is new
|
|
}
|
|
);
|
|
```
|
|
|
|
Instead of providing a function, the selector can be assigned to the following values. These values insert a default functionality:
|
|
| Value | Description |
|
|
| - | - |
|
|
| `dispatcher` | Tries to execute the service on the requesting dispatcher |
|
|
| `first` | Tries to execute the service on the first dispatcher which replied to the request |
|
|
| `host` | Tries to execute the service on a random dispatcher found on the same host |
|
|
| `cpu-usage` | Tries to execute the service on the dispatcher with the minimal used cpu. To compare the elements the selection considers the available Cores as well |
|
|
| `free-ram` | Tries to execute the service on the dispatcher which has free ram |
|
|
|
|
To define a custom policy, provide the function as follows:
|
|
`(dispatcherId: string, options?: { last?: boolean, initalTest?: boolean }) => Promise<boolean>`
|
|
|
|
The first parameter receives the `responding` dispatcher-id the second contains additional flags, which might be used during the selection process:
|
|
| Position | Parameter | Description |
|
|
| - | - | - |
|
|
| 0 | `dispatcherId` | Tries to execute the service on the requesting dispatcher |
|
|
| 1 |`options` | _optional_ : additional parameter with options |
|
|
|
|
The Parameter options contains the following parameters:
|
|
| Parameter | Description |
|
|
| - | - |
|
|
| `last` | shows that the last dispatcher is being checked. |
|
|
| `initalTest`| shows a flag, that the function is just tested. This is important if you want to check all dispatchers and compare them later etc. |
|
|
|
|
- Adapting Dispatcher:
|
|
|
|
- Adding/Adapted the Functions `unregisterCallback`. This callback allows to unregister callbacks that are given in a `rpc-call`. See the Example below:
|
|
|
|
```typescript
|
|
// Add the Example Here
|
|
```
|
|
|
|
Therefore the `communication-layers` and `mirros` have to implement additional events ().
|
|
|
|
- Adding/Adapted the Functions `instanceExists`, `publisherExists` and `subscriptionExists`. These functions allows to check whether the instance / publisher / subscriber exists for the given `identifier` or `topic`
|
|
- Added `getInstanceInfo`, a function, which will return the instance description and the corresponding dispatcher.
|
|
- Added `getDispatcherForInstance`, a function, which will return the matching dispatcher of the instance.
|
|
- Creating Instances: Now the Dispatcher tests, if there is allready an instance with this name and type. If the type miss matches, an **error** is thrown. Otherwise the dispatcher tries to adapt the selector-function.
|
|
- Adapted the `IDispatcherInfo` message:
|
|
|
|
```typescript
|
|
export interface IDispatcherInfo {
|
|
id: string;
|
|
timestamp: number;
|
|
status: ENopeDispatcherStatus;
|
|
env: string;
|
|
version: string;
|
|
host: {
|
|
cores: number;
|
|
cpu: {
|
|
// Name of the CPU as String
|
|
model: string;
|
|
// Speed of the CPU in MHz
|
|
speed: number;
|
|
// Usage of the CPU in %. If not present ==> -1
|
|
usage: number;
|
|
};
|
|
os: string;
|
|
ram: {
|
|
// Amount of free RAM in MByte
|
|
free: number;
|
|
// Amount of free RAM in MByte
|
|
total: number;
|
|
// Used RAM in %
|
|
usedPerc: number;
|
|
};
|
|
};
|
|
pid: number | string;
|
|
}
|
|
```
|
|
|
|
# 0.9.6
|
|
|
|
- Adding MQTT as Communication-Layer.
|
|
- Fixing `getIdentifierOf` at `BaseModule`.
|