Skip to content

Commit

Permalink
Added getDetails() to LoaderInterface and engines
Browse files Browse the repository at this point in the history
  • Loading branch information
greenya committed Jan 17, 2019
1 parent 67bec55 commit 27df053
Show file tree
Hide file tree
Showing 9 changed files with 41 additions and 3 deletions.
4 changes: 4 additions & 0 deletions p2p-media-loader-core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,10 @@ Listener args:

Returns loader instance settings.

### `engine.getDetails()`

Returns loader instance details.

### `loader.getSegment(id)`

Returns a segment from loader cache or undefined if the segment is not available.
Expand Down
6 changes: 6 additions & 0 deletions p2p-media-loader-core/lib/hybrid-loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,12 @@ export default class HybridLoader extends EventEmitter implements LoaderInterfac
return this.settings;
}

public getDetails() {
return {
peerId: this.p2pManager.getPeerId()
};
}

public destroy(): void {
this.segmentsQueue = [];
this.httpManager.destroy();
Expand Down
1 change: 1 addition & 0 deletions p2p-media-loader-core/lib/loader-interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ export interface LoaderInterface {
load(segments: Segment[], swarmId: string): void;
getSegment(id: string): Segment | undefined;
getSettings(): any;
getDetails(): any;
destroy(): void;
}

Expand Down
12 changes: 9 additions & 3 deletions p2p-media-loader-core/lib/p2p-media-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export class P2PMediaManager extends STEEmitter<
private peerCandidates: Map<string, MediaPeer[]> = new Map();
private peerSegmentRequests: Map<string, PeerSegmentRequest> = new Map();
private swarmId: string | null = null;
private peerId: ArrayBuffer;
private readonly peerId: ArrayBuffer;
private debug = Debug("p2pml:p2p-media-manager");
private pendingTrackerClient: {
isDestroyed: boolean
Expand All @@ -60,13 +60,19 @@ export class P2PMediaManager extends STEEmitter<
}) {
super();

this.peerId = crypto.getRandomValues(new Uint8Array(20)).buffer;
this.peerId = settings.useP2P
? crypto.getRandomValues(new Uint8Array(20)).buffer
: new ArrayBuffer(0);

if (this.debug.enabled) {
this.debug("peer ID", Buffer.from(this.peerId).toString("hex"));
this.debug("peer ID", this.getPeerId());
}
}

public getPeerId(): string {
return Buffer.from(this.peerId).toString("hex");
}

public async setSwarmId(swarmId: string) {
if (this.swarmId === swarmId) {
return;
Expand Down
4 changes: 4 additions & 0 deletions p2p-media-loader-hlsjs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ Creates a new `Engine` instance.

Returns engine instance settings.

### `engine.getDetails()`

Returns engine instance details.

### `engine.createLoaderClass()`

Creates hls.js loader class bound to this engine.
Expand Down
6 changes: 6 additions & 0 deletions p2p-media-loader-hlsjs/lib/engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,12 @@ export class Engine extends EventEmitter {
};
}

public getDetails(): any {
return {
loader: this.loader.getDetails()
};
}

public setPlayingSegment(url: string, byterange: Byterange) {
this.segmentManager.setPlayingSegment(url, byterange);
}
Expand Down
1 change: 1 addition & 0 deletions p2p-media-loader-hlsjs/test/segment-manager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class LoaderInterfaceEmptyImpl implements LoaderInterface {
load(segments: Segment[], swarmId: string): void { }
getSegment(id: string): Segment | undefined { return undefined; }
getSettings(): any { }
getDetails(): any { }
destroy(): void { }
}

Expand Down
4 changes: 4 additions & 0 deletions p2p-media-loader-shaka/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ Creates a new `Engine` instance.

Returns engine instance settings.

### `engine.getDetails()`

Returns engine instance details.

### `engine.destroy()`

Destroys engine; destroy loader and segment manager.
Expand Down
6 changes: 6 additions & 0 deletions p2p-media-loader-shaka/lib/engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,12 @@ export class Engine extends EventEmitter {
};
}

public getDetails(): any {
return {
loader: this.loader.getDetails()
};
}

public initShakaPlayer(player: any) {
integration.initShakaPlayer(player, this.segmentManager);
}
Expand Down

0 comments on commit 27df053

Please sign in to comment.