Compare commits
	
		
			2 Commits
		
	
	
		
			4fa977347c
			...
			fc38a1b20c
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| fc38a1b20c | |||
| 2596e822bd | 
| @@ -17,6 +17,7 @@ type ServiceContract interface { | ||||
| 	GetFFprobeVersion() (string, error) | ||||
| 	ChangeFFmpegPath(path string) (bool, error) | ||||
| 	ChangeFFprobePath(path string) (bool, error) | ||||
| 	GetRunningProcesses() map[int]*exec.Cmd | ||||
| } | ||||
|  | ||||
| type ProgressContract interface { | ||||
| @@ -29,8 +30,14 @@ type FFPathUtilities struct { | ||||
| 	FFprobe string | ||||
| } | ||||
|  | ||||
| type runningProcesses struct { | ||||
| 	items          map[int]*exec.Cmd | ||||
| 	numberOfStarts int | ||||
| } | ||||
|  | ||||
| type Service struct { | ||||
| 	ffPathUtilities *FFPathUtilities | ||||
| 	ffPathUtilities  *FFPathUtilities | ||||
| 	runningProcesses runningProcesses | ||||
| } | ||||
|  | ||||
| type File struct { | ||||
| @@ -51,7 +58,8 @@ type ConvertData struct { | ||||
|  | ||||
| func NewService(ffPathUtilities FFPathUtilities) *Service { | ||||
| 	return &Service{ | ||||
| 		ffPathUtilities: &ffPathUtilities, | ||||
| 		ffPathUtilities:  &ffPathUtilities, | ||||
| 		runningProcesses: runningProcesses{items: map[int]*exec.Cmd{}, numberOfStarts: 0}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -77,10 +85,14 @@ func (s Service) RunConvert(setting ConvertSetting, progress ProgressContract) e | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	index := s.runningProcesses.numberOfStarts | ||||
| 	s.runningProcesses.numberOfStarts++ | ||||
| 	s.runningProcesses.items[index] = cmd | ||||
|  | ||||
| 	errProgress := progress.Run(stdOut, stdErr) | ||||
|  | ||||
| 	err = cmd.Wait() | ||||
| 	delete(s.runningProcesses.items, index) | ||||
| 	if errProgress != nil { | ||||
| 		return errProgress | ||||
| 	} | ||||
| @@ -155,3 +167,7 @@ func (s Service) ChangeFFprobePath(path string) (bool, error) { | ||||
| 	s.ffPathUtilities.FFprobe = path | ||||
| 	return true, nil | ||||
| } | ||||
|  | ||||
| func (s Service) GetRunningProcesses() map[int]*exec.Cmd { | ||||
| 	return s.runningProcesses.items | ||||
| } | ||||
|   | ||||
| @@ -98,7 +98,6 @@ func (v View) Main( | ||||
|  | ||||
| 	v.w.SetContent(widget.NewCard("Конвертор видео файлов в mp4", "", container.NewVBox(form, conversionMessage, progress))) | ||||
| 	form.Disable() | ||||
| 	progress.Hide() | ||||
| } | ||||
|  | ||||
| func (v View) getButtonFileVideoForConversion(form *widget.Form, progress *widget.ProgressBar, conversionMessage *canvas.Text) (*widget.Button, *canvas.Text, *File) { | ||||
|   | ||||
							
								
								
									
										11
									
								
								src/main.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/main.go
									
									
									
									
									
								
							| @@ -38,7 +38,7 @@ func main() { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	defer appClose(db) | ||||
| 	defer appCloseWithDb(db) | ||||
|  | ||||
| 	err = migration.Run(db) | ||||
| 	if err != nil { | ||||
| @@ -66,6 +66,7 @@ func main() { | ||||
| 	convertorView := convertor.NewView(w) | ||||
| 	settingView := setting.NewView(w) | ||||
| 	convertorService := convertor.NewService(ffPathUtilities) | ||||
| 	defer appCloseWithConvert(convertorService) | ||||
| 	mainHandler := handler.NewConvertorHandler(convertorService, convertorView, settingView, settingRepository) | ||||
|  | ||||
| 	mainHandler.GetConvertor() | ||||
| @@ -73,13 +74,19 @@ func main() { | ||||
| 	w.ShowAndRun() | ||||
| } | ||||
|  | ||||
| func appClose(db *gorm.DB) { | ||||
| func appCloseWithDb(db *gorm.DB) { | ||||
| 	sqlDB, err := db.DB() | ||||
| 	if err == nil { | ||||
| 		_ = sqlDB.Close() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func appCloseWithConvert(convertorService convertor.ServiceContract) { | ||||
| 	for _, cmd := range convertorService.GetRunningProcesses() { | ||||
| 		_ = cmd.Process.Kill() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func canCreateFile(path string) bool { | ||||
| 	file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, 0666) | ||||
| 	if err != nil { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user