filehash

package
v0.0.0-...-c135731 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 17, 2021 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Example
package main

import (
	"log"
	"time"

	"github.com/northbright/taskman"
	_ "github.com/northbright/taskman/filehash"
)

func main() {
	data := []byte(`{"file":"task.go","hash_funcs":["md5","sha1"]}`)

	tm, ch, _ := taskman.New("filehash", 1)

	// Start a new goroutine to handle the task messages.
	go func() {
		for {
			select {
			case m := <-ch:
				switch m.Type {
				case taskman.ERROR:
					log.Printf("task: %v error: %v", m.TaskID, m.Data.(string))
				case taskman.SCHEDULED:
					log.Printf("task: %v scheduled", m.TaskID)
				case taskman.STARTED:
					log.Printf("task: %v started", m.TaskID)
				case taskman.STOPPED:
					log.Printf("task: %v stopped", m.TaskID)
					state, _ := m.Data.([]byte)
					log.Printf("saved state: %s", string(state))
				case taskman.DELETED:
					log.Printf("task: %v deleted", m.TaskID)
					state, _ := m.Data.([]byte)
					log.Printf("saved state: %s", string(state))

				case taskman.RESTORED:
					log.Printf("task: %v restored", m.TaskID)
					state, _ := m.Data.([]byte)
					log.Printf("restored state: %s", string(state))

				case taskman.SUSPENDED:
					log.Printf("task %v suspended", m.TaskID)
				case taskman.RESUMED:
					log.Printf("task %v resumed", m.TaskID)
				case taskman.DONE:
					log.Printf("task: %v done", m.TaskID)
					state, _ := m.Data.([]byte)
					log.Printf("final saved state: %s", string(state))
				case taskman.RESULT_GENERATED:
					log.Printf("task: %v result generated", m.TaskID)
					result, _ := m.Data.([]byte)
					log.Printf("result: %s", string(result))
				case taskman.EXITED:
					log.Printf("task: %v exited", m.TaskID)
				case taskman.ALL_EXITED:
					log.Printf("all tasks exited")
				case taskman.PROGRESS_UPDATED:
					p, _ := m.Data.(int)
					log.Printf("task: %v, progress: %v", m.TaskID, p)
				}

			}
		}
	}()

	id, _ := tm.Add(data)
	tm.Start(id, nil)

	<-time.After(time.Second * 5)

}
Output:

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	DefaultBufferSize int = 8 * 1024 * 1024

	NotSupportedHashFuncErr = errors.New("not supported hash func")
	NoFileToHashErr         = errors.New("no file to hash")
	HashFuncNotAvailableErr = errors.New("hash function is not available")
	InvalidHashStateErr     = errors.New("invalid hash state")
	FileIsDirErr            = errors.New("file is dir")
	SavedStateNotMatchedErr = errors.New("saved state and hash func not matched")
)

Functions

This section is empty.

Types

type Result

type Result struct {
	Checksums map[string][]byte `json:"checksums"`
}

type State

type State struct {
	Summed string            `json:"summed"`
	Datas  map[string][]byte `json:"datas"`
	// contains filtered or unexported fields
}

type Task

type Task struct {
	File       string   `json:"file"`
	HashFuncs  []string `json:"hash_funcs"`
	BufferSize string   `json:"buffer_size"`
	// contains filtered or unexported fields
}

func (*Task) Deinit

func (t *Task) Deinit(ctx context.Context) error

func (*Task) Init

func (t *Task) Init(ctx context.Context) error

func (*Task) MarshalBinary

func (t *Task) MarshalBinary() ([]byte, error)

func (*Task) Result

func (t *Task) Result() ([]byte, error)

func (*Task) Step

func (t *Task) Step() (int64, bool, error)

func (*Task) Total

func (t *Task) Total() int64

func (*Task) UnmarshalBinary

func (t *Task) UnmarshalBinary(data []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL