Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/PeerFileReceive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,17 @@ interface Events {
// Called when receiver (this) has requested to resume
resume(): void

// Called when sender has requested to resume
resumed(): void

// Called when the receiver (this) calls cancel
cancel(): void

// Called when the sender cancels the transfer
cancelled(): void

// Called when simple-peer connexion closes with error
error(reason?: string): void
}

class ReceiveStream extends Writable {
Expand All @@ -40,6 +46,8 @@ class ReceiveStream extends Writable {
this.emit('chunk', data.slice(1))
} else if (data[0] === ControlHeaders.TRANSFER_PAUSE) {
this.emit('paused')
} else if (data[0] === ControlHeaders.TRANSFER_RESUME) {
this.emit('resumed')
}

if (data[0] === ControlHeaders.TRANSFER_CANCEL) {
Expand Down Expand Up @@ -79,6 +87,9 @@ export default class PeerFileReceive extends EventEmitter<Events> {

this.rs = new ReceiveStream()
this.peer = peer
this.peer.on("error", err => {
this.emit('error', JSON.stringify(err));
});

peer.pipe(this.rs)

Expand Down Expand Up @@ -122,6 +133,9 @@ export default class PeerFileReceive extends EventEmitter<Events> {
this.rs.on('paused', () => {
this.emit('paused')
})
this.rs.on('resumed', () => {
this.emit('resumed')
})
this.rs.on('cancelled', () => {
this.emit('cancelled')
})
Expand Down
8 changes: 8 additions & 0 deletions src/PeerFileSend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ interface Events {

// Called when the receiver has requested a cancel
cancelled(): void

// Called when simple-peer connexion closes with error
error(reason?: string): void
}

/**
Expand Down Expand Up @@ -112,6 +115,10 @@ export default class PeerFileSend extends EventEmitter<Events> {
super()

this.peer = peer
this.peer.on("error", err => {
this.emit('error', JSON.stringify(err));
});

this.file = file
this.offset = offset
}
Expand Down Expand Up @@ -213,6 +220,7 @@ export default class PeerFileSend extends EventEmitter<Events> {

// Allow data to be sent & start sending data
resume () {
this.sendPeer(ControlHeaders.TRANSFER_RESUME)
this.paused = false
this._resume()
this.emit('resume')
Expand Down