desc_lorca.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // package desc_lorca -- главный тип десктопного приложения для lorca
  2. package desc_lorca
  3. import (
  4. "fmt"
  5. "log"
  6. "wartank/desc_lorca/lorca_gui"
  7. "wartank/server"
  8. )
  9. // ДесктопЛорка -- главный тип десктопного приложения для lorca
  10. type ДесктопЛорка struct {
  11. сервер *server.Сервер // Сервер для взаимодействия с лоркой
  12. гипЛорка *lorca_gui.ЛоркаГуи // ГИП десктопа на Лорке
  13. }
  14. // НовДесктопЛорка -- возвращает новый десктоп на Лорке
  15. func НовДесктопЛорка() (*ДесктопЛорка, error) {
  16. гип, ош := lorca_gui.НовЛоркаГуи()
  17. if ош != nil {
  18. return nil, fmt.Errorf("НовДесктопЛорка(): при создании ЛоркаГуи, ош=\n\t%w", ош)
  19. }
  20. сам := &ДесктопЛорка{
  21. гипЛорка: гип,
  22. }
  23. сам.сервер, ош = server.НовСервер()
  24. if ош != nil {
  25. return nil, fmt.Errorf("НовДесктопЛорка(): при создании ИСервер, ош=\n\t%w", ош)
  26. }
  27. return сам, nil
  28. }
  29. // Отменить -- отменяет работу десктопа
  30. func (сам *ДесктопЛорка) Отменить() {
  31. сам.сервер.Отменить()
  32. }
  33. // Пуск -- запускает работу десктопа
  34. func (сам *ДесктопЛорка) Пуск() error {
  35. go func() {
  36. ош := сам.сервер.Пуск()
  37. if ош != nil {
  38. log.Printf("ДесктопЛорка.Пуск(): ош=\n\t%v\n", ош)
  39. }
  40. }()
  41. сам.сервер.Wg().Wait()
  42. return nil
  43. }