Skip to content

Passing channel to cancel a diff #7

@amlwwalker

Description

@amlwwalker

Hello!
This is a cool bit of work.
I am looking to cancel a diff (on large files where the diff takes time), I want to pass a channel into the function that gets checked for a message (on a switch case) and if a value comes off the channel, it cancels the diff and stops in its tracks and cleans up.

My questions.

Where best to put the channel? I am thinking to fork your work.

There is the line of code:

binarydist/diff.go

Lines 234 to 240 in 190e7de

for scan < len(nbuf) {
var oldscore int
scan += length
for scsc := scan; scan < len(nbuf); scan++ {
pos, length = search(I, obuf, nbuf[scan:], 0, len(obuf))
for ; scsc < scan+length; scsc++ {

I.e the

for scan < len(nbuf) { 

line of code.

If I pass a channel into this function, and then inside the for loop, do a switch case can I stop the diff safely and destroy whatever diffing has already occured and pass back a success message?
Its just because on larger files diffing can take some time and I'd like to be able to stop it...

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions