ing
This commit is contained in:
parent
7d9fd23271
commit
4ff5eead18
17
@overflow/discovery/core/discovery-subject.ts
Normal file
17
@overflow/discovery/core/discovery-subject.ts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import { Subject } from 'rxjs';
|
||||||
|
|
||||||
|
import {
|
||||||
|
Zone,
|
||||||
|
Host,
|
||||||
|
Port,
|
||||||
|
Service,
|
||||||
|
} from '@overflow/commons-typescript/model/discovery';
|
||||||
|
|
||||||
|
export interface DiscoveryNotify {
|
||||||
|
method: string;
|
||||||
|
params: Date | Zone | Host | Port | Service;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class DiscoverySubject extends Subject<DiscoveryNotify> {
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
import { RPCService } from '@loafer/ng-rpc';
|
|
||||||
|
import { RPCService, RPCSubscribeService } from '@loafer/ng-rpc';
|
||||||
import {
|
import {
|
||||||
DiscoverZone as MDDiscoverZone,
|
DiscoverZone as MDDiscoverZone,
|
||||||
DiscoverHost as MDDiscoverHost,
|
DiscoverHost as MDDiscoverHost,
|
||||||
|
@ -12,25 +13,50 @@ import {
|
||||||
Service,
|
Service,
|
||||||
} from '@overflow/commons-typescript/model/discovery';
|
} from '@overflow/commons-typescript/model/discovery';
|
||||||
|
|
||||||
|
import { DiscoverySubject, DiscoveryNotify } from '../core/discovery-subject';
|
||||||
|
import * as DiscoverStore from '../store/discover';
|
||||||
|
import { DiscoverySubscriber } from '../subscriber/discovery.subscriber';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class DiscoveryService {
|
export class DiscoveryService {
|
||||||
|
|
||||||
public constructor(
|
public constructor(
|
||||||
|
private discoverySubscriber: DiscoverySubscriber,
|
||||||
private rpcService: RPCService,
|
private rpcService: RPCService,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public discoverZone(probeID: string, discoverZone: MDDiscoverZone): void {
|
public discoverZone(probeID: string, discoverZone: MDDiscoverZone): Observable<DiscoveryNotify> {
|
||||||
|
const discoverySubject: DiscoverySubject = new DiscoverySubject();
|
||||||
|
this.discoverySubscriber.setDiscoverySubject(discoverySubject);
|
||||||
|
|
||||||
this.rpcService.send('DiscoveryService.discoverZone', probeID, discoverZone);
|
this.rpcService.send('DiscoveryService.discoverZone', probeID, discoverZone);
|
||||||
|
|
||||||
|
return discoverySubject;
|
||||||
}
|
}
|
||||||
public discoverHost(probeID: string, zone: Zone, discoverHost: MDDiscoverHost): void {
|
public discoverHost(probeID: string, zone: Zone, discoverHost: MDDiscoverHost): Observable<DiscoveryNotify> {
|
||||||
|
const discoverySubject: DiscoverySubject = new DiscoverySubject();
|
||||||
|
this.discoverySubscriber.setDiscoverySubject(discoverySubject);
|
||||||
|
|
||||||
this.rpcService.send('DiscoveryService.discoverHost', probeID, zone, discoverHost);
|
this.rpcService.send('DiscoveryService.discoverHost', probeID, zone, discoverHost);
|
||||||
|
|
||||||
|
return discoverySubject;
|
||||||
}
|
}
|
||||||
public discoverPort(probeID: string, host: Host, discoverPort: MDDiscoverPort): void {
|
public discoverPort(probeID: string, host: Host, discoverPort: MDDiscoverPort): Observable<DiscoveryNotify> {
|
||||||
|
const discoverySubject: DiscoverySubject = new DiscoverySubject();
|
||||||
|
this.discoverySubscriber.setDiscoverySubject(discoverySubject);
|
||||||
|
|
||||||
this.rpcService.send('DiscoveryService.discoverPort', probeID, host, discoverPort);
|
this.rpcService.send('DiscoveryService.discoverPort', probeID, host, discoverPort);
|
||||||
|
|
||||||
|
return discoverySubject;
|
||||||
}
|
}
|
||||||
public discoverService(probeID: string, port: Port, discoverService: MDDiscoverService): void {
|
public discoverService(probeID: string, port: Port, discoverService: MDDiscoverService): Observable<DiscoveryNotify> {
|
||||||
|
const discoverySubject: DiscoverySubject = new DiscoverySubject();
|
||||||
|
this.discoverySubscriber.setDiscoverySubject(discoverySubject);
|
||||||
|
|
||||||
this.rpcService.send('DiscoveryService.discoverService', probeID, port, discoverService);
|
this.rpcService.send('DiscoveryService.discoverService', probeID, port, discoverService);
|
||||||
|
|
||||||
|
return discoverySubject;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Store, select } from '@ngrx/store';
|
import { catchError, exhaustMap, map, tap } from 'rxjs/operators';
|
||||||
|
|
||||||
import { RPCSubscriber } from '@loafer/ng-rpc';
|
import { RPCSubscriber } from '@loafer/ng-rpc';
|
||||||
import { LoggerService } from '@loafer/ng-logger';
|
import { LoggerService } from '@loafer/ng-logger';
|
||||||
|
|
||||||
|
import { DiscoverSelector } from '../store';
|
||||||
import * as DiscoverStore from '../store/discover';
|
import * as DiscoverStore from '../store/discover';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@ -12,28 +13,43 @@ import {
|
||||||
Port,
|
Port,
|
||||||
Service,
|
Service,
|
||||||
} from '@overflow/commons-typescript/model/discovery';
|
} from '@overflow/commons-typescript/model/discovery';
|
||||||
|
import { DiscoverySubject } from '../core/discovery-subject';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class DiscoverySubscriber {
|
export class DiscoverySubscriber {
|
||||||
|
discoverySubject: DiscoverySubject | null;
|
||||||
|
|
||||||
public constructor(
|
public constructor(
|
||||||
private store: Store<DiscoverStore.State>,
|
|
||||||
private loggerService: LoggerService,
|
private loggerService: LoggerService,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* name
|
||||||
|
*/
|
||||||
|
public setDiscoverySubject(discoverySubject: DiscoverySubject) {
|
||||||
|
this.discoverySubject = discoverySubject;
|
||||||
|
}
|
||||||
|
|
||||||
|
private publish(method: string, params: any): void {
|
||||||
|
if (null !== this.discoverySubject) {
|
||||||
|
this.discoverySubject.next({method: method, params: params});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@RPCSubscriber({method: 'DiscoveryService.discoveryStart'})
|
@RPCSubscriber({method: 'DiscoveryService.discoveryStart'})
|
||||||
public discoveryStart(startDate: Date): void {
|
public discoveryStart(startDate: Date): void {
|
||||||
this.loggerService.debug('DiscoverySubscriber.discoveryStart startDate:', startDate);
|
this.loggerService.debug('DiscoverySubscriber.discoveryStart startDate:', startDate);
|
||||||
|
|
||||||
this.store.dispatch(new DiscoverStore.DiscoveryStart(startDate));
|
this.publish('DiscoveryService.discoveryStart', startDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RPCSubscriber({method: 'DiscoveryService.discoveryStop'})
|
@RPCSubscriber({method: 'DiscoveryService.discoveryStop'})
|
||||||
public discoveryStop(stopDate: Date): void {
|
public discoveryStop(stopDate: Date): void {
|
||||||
this.loggerService.debug('DiscoverySubscriber.discoveryStop stopDate:', stopDate);
|
this.loggerService.debug('DiscoverySubscriber.discoveryStop stopDate:', stopDate);
|
||||||
|
|
||||||
this.store.dispatch(new DiscoverStore.DiscoveryStop(stopDate));
|
this.publish('DiscoveryService.discoveryStop', stopDate);
|
||||||
|
this.setDiscoverySubject(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,21 +57,21 @@ export class DiscoverySubscriber {
|
||||||
public discoveredZone(zone: Zone): void {
|
public discoveredZone(zone: Zone): void {
|
||||||
this.loggerService.debug('DiscoverySubscriber.discoveredZone zone:', zone);
|
this.loggerService.debug('DiscoverySubscriber.discoveredZone zone:', zone);
|
||||||
|
|
||||||
this.store.dispatch(new DiscoverStore.DiscoveredZone(zone));
|
this.publish('DiscoveryService.discoveredZone', zone);
|
||||||
}
|
}
|
||||||
@RPCSubscriber({method: 'DiscoveryService.discoveredHost'})
|
@RPCSubscriber({method: 'DiscoveryService.discoveredHost'})
|
||||||
public discoveredHost(host: Host): void {
|
public discoveredHost(host: Host): void {
|
||||||
this.loggerService.debug('DiscoverySubscriber.discoveredHost host:', host);
|
this.loggerService.debug('DiscoverySubscriber.discoveredHost host:', host);
|
||||||
|
|
||||||
this.store.dispatch(new DiscoverStore.DiscoveredHost(host));
|
this.publish('DiscoveryService.discoveredHost', host);
|
||||||
}
|
}
|
||||||
@RPCSubscriber({method: 'DiscoveryService.discoveredPort'})
|
@RPCSubscriber({method: 'DiscoveryService.discoveredPort'})
|
||||||
public discoveredPort(port: Port): void {
|
public discoveredPort(port: Port): void {
|
||||||
this.store.dispatch(new DiscoverStore.DiscoveredPort(port));
|
this.publish('DiscoveryService.discoveredPort', port);
|
||||||
}
|
}
|
||||||
@RPCSubscriber({method: 'DiscoveryService.discoveredService'})
|
@RPCSubscriber({method: 'DiscoveryService.discoveredService'})
|
||||||
public discoveredService(service: Service): void {
|
public discoveredService(service: Service): void {
|
||||||
this.loggerService.debug('DiscoverySubscriber.discoveredService service:', service);
|
this.loggerService.debug('DiscoverySubscriber.discoveredService service:', service);
|
||||||
this.store.dispatch(new DiscoverStore.DiscoveredService(service));
|
this.publish('DiscoveryService.discoveredService', service);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
3525
package-lock.json
generated
3525
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user