Skip to content

Commit

Permalink
refactor: hasSegment function
Browse files Browse the repository at this point in the history
  • Loading branch information
DimaDemchenko committed Aug 19, 2024
1 parent bf96747 commit 7772e57
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 16 deletions.
21 changes: 9 additions & 12 deletions packages/p2p-media-loader-core/src/hybrid-loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ export class HybridLoader {
streamSwarmId,
segment.externalId,
);
if (this.segmentStorage.hasSegment(segmentStorageId)) {
if (this.segmentStorage.hasSegment(streamSwarmId, segment.externalId)) {
// TODO: error handling
const data = await this.segmentStorage.getSegmentData(segmentStorageId);
if (data) {
Expand Down Expand Up @@ -218,13 +218,18 @@ export class HybridLoader {
stream,
);
const streamId = StreamUtils.getStreamId(stream);
const segmentStorageId = getStorageItemId(
streamSwarmId,
segment.externalId,
);
const segmentInfoItem = createSegmentInfoItem(
streamSwarmId,
streamId,
segment.externalId,
segmentStorageId,
);
const segmentDataItem = createSegmentDataItem(
getStorageItemId(streamSwarmId, segment.externalId),
segmentStorageId,
request.data,
now,
streamId,
Expand Down Expand Up @@ -418,15 +423,11 @@ export class HybridLoader {
this.config.swarmId ?? this.streamManifestUrl,
segment.stream,
);
const segmentStorageId = getStorageItemId(
streamSwarmId,
segment.externalId,
);

if (
!statuses.isHttpDownloadable ||
statuses.isP2PDownloadable ||
this.segmentStorage.hasSegment(segmentStorageId)
this.segmentStorage.hasSegment(streamSwarmId, segment.externalId)
) {
continue;
}
Expand Down Expand Up @@ -524,13 +525,9 @@ export class HybridLoader {
this.config.swarmId ?? this.streamManifestUrl,
segment.stream,
);
const segmentStorageId = getStorageItemId(
streamSwarmId,
segment.externalId,
);

if (
this.segmentStorage.hasSegment(segmentStorageId) ||
this.segmentStorage.hasSegment(streamSwarmId, segment.externalId) ||
this.requests.get(segment)?.status === "succeed"
) {
alreadyLoadedCount++;
Expand Down
6 changes: 4 additions & 2 deletions packages/p2p-media-loader-core/src/segments-storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,10 @@ export class SegmentsMemoryStorage implements ISegmentsStorage {
return dataItem.data;
}

hasSegment(segmentStorageId: string): boolean {
return this.cache.has(segmentStorageId);
hasSegment(streamSwarmId: string, externalId: number): boolean {
const streamCache = this.cacheMap.get(streamSwarmId);

return streamCache === undefined ? false : streamCache.has(externalId);
}

getStoredSegmentExternalIdsOfStream(streamSwarmId: string) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export interface ISegmentsStorage {

getSegmentData(segmentStorageId: string): Promise<ArrayBuffer | undefined>;

hasSegment(segmentStorageId: string): boolean;
hasSegment(streamSwarmId: string, externalId: number): boolean;

getStoredSegmentExternalIdsOfStream(streamSwarmId: string): number[];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export type SegmentInfoItem = {
streamSwarmId: string;
streamId: string;
externalId: number;
storageId: string;
};

export type SegmentDataItem = {
Expand Down
3 changes: 2 additions & 1 deletion packages/p2p-media-loader-core/src/segments-storage/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ export function createSegmentInfoItem(
streamSwarmId: string,
streamId: string,
externalId: number,
storageId: string,
): SegmentInfoItem {
return { streamSwarmId, streamId, externalId };
return { streamSwarmId, streamId, externalId, storageId };
}

export function createSegmentDataItem(
Expand Down

0 comments on commit 7772e57

Please sign in to comment.