store_net.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // package store_net -- реализация сетевого хранилища
  2. package store_net
  3. import (
  4. "fmt"
  5. "github.com/sirupsen/logrus"
  6. "wartank/pkg/types"
  7. )
  8. // StoreNet -- реализвция сетевого хранилища
  9. type StoreNet struct {
  10. desktop types.IDesktop
  11. ws types.IWebSocket
  12. }
  13. // NewStoreNet -- возвращает новый объект сетевого хранилища
  14. func NewStoreNet(desktop types.IDesktop) (*StoreNet, error) {
  15. logrus.Infof("NewStoreNet()")
  16. if desktop == nil {
  17. return nil, fmt.Errorf("NewStoreNet(): IDesktop = =nil")
  18. }
  19. sf := &StoreNet{
  20. desktop: desktop,
  21. ws: desktop.Ws(),
  22. }
  23. return sf, nil
  24. }
  25. // Find -- поиск объекта в хранилище
  26. func (sf *StoreNet) Find(prefix string) (map[string]string, error) {
  27. logrus.Debugf("StoreNet.Find()")
  28. mapReq := make(map[string]string)
  29. mapReq["cmd"] = "/store/find"
  30. mapReq["key"] = prefix
  31. dictResp, err := sf.ws.Call("/store/find", mapReq)
  32. if err != nil {
  33. return nil, fmt.Errorf("StoreNet.Find(): in write StoreNet, err=\n\t%w", err)
  34. }
  35. strErr := dictResp["err"]
  36. if strErr != "" {
  37. return nil, fmt.Errorf("StoreNet.Find(): in response, err=\n\t%v", strErr)
  38. }
  39. return dictResp, nil
  40. }
  41. // Get -- получает содержимое записи по ключу
  42. func (sf *StoreNet) Get(key string) (string, error) {
  43. logrus.Debugf("StoreNet.Get()")
  44. dictResp, err := sf.ws.Read(key)
  45. if err != nil {
  46. return "", fmt.Errorf("StoreNet.Get(): in read StoreNet, err=\n\t%w", err)
  47. }
  48. strErr := dictResp["err"]
  49. if string(strErr) != "" {
  50. return "", fmt.Errorf("StoreNet.Get(): in response, err=\n\t%v", strErr)
  51. }
  52. strResp := dictResp["res"]
  53. return strResp, nil
  54. }
  55. // Put -- помещает запись в хранилище
  56. func (sf *StoreNet) Put(key string, val string) error {
  57. logrus.Debugf("StoreNet.Put()")
  58. dictReq := make(map[string]string)
  59. dictReq["key"] = key
  60. dictReq["val"] = val
  61. err := sf.ws.Write("/store/put", dictReq)
  62. if err != nil {
  63. return fmt.Errorf("StoreNet.Get(): in write StoreNet, err=\n\t%w", err)
  64. }
  65. return nil
  66. }