src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/daemon/service.go (about)

     1  package daemon
     2  
     3  import (
     4  	"syscall"
     5  
     6  	"src.elv.sh/pkg/daemon/internal/api"
     7  	"src.elv.sh/pkg/store/storedefs"
     8  )
     9  
    10  // A net/rpc service for the daemon.
    11  type service struct {
    12  	version int
    13  	store   storedefs.Store
    14  	err     error
    15  }
    16  
    17  // Implementations of RPC methods.
    18  
    19  // Version returns the API version number.
    20  func (s *service) Version(req *api.VersionRequest, res *api.VersionResponse) error {
    21  	res.Version = s.version
    22  	return nil
    23  }
    24  
    25  // Pid returns the process ID of the daemon.
    26  func (s *service) Pid(req *api.PidRequest, res *api.PidResponse) error {
    27  	res.Pid = syscall.Getpid()
    28  	return nil
    29  }
    30  
    31  func (s *service) NextCmdSeq(req *api.NextCmdSeqRequest, res *api.NextCmdSeqResponse) error {
    32  	if s.err != nil {
    33  		return s.err
    34  	}
    35  	seq, err := s.store.NextCmdSeq()
    36  	res.Seq = seq
    37  	return err
    38  }
    39  
    40  func (s *service) AddCmd(req *api.AddCmdRequest, res *api.AddCmdResponse) error {
    41  	if s.err != nil {
    42  		return s.err
    43  	}
    44  	seq, err := s.store.AddCmd(req.Text)
    45  	res.Seq = seq
    46  	return err
    47  }
    48  
    49  func (s *service) DelCmd(req *api.DelCmdRequest, res *api.DelCmdResponse) error {
    50  	if s.err != nil {
    51  		return s.err
    52  	}
    53  	err := s.store.DelCmd(req.Seq)
    54  	return err
    55  }
    56  
    57  func (s *service) Cmd(req *api.CmdRequest, res *api.CmdResponse) error {
    58  	if s.err != nil {
    59  		return s.err
    60  	}
    61  	text, err := s.store.Cmd(req.Seq)
    62  	res.Text = text
    63  	return err
    64  }
    65  
    66  func (s *service) CmdsWithSeq(req *api.CmdsWithSeqRequest, res *api.CmdsWithSeqResponse) error {
    67  	if s.err != nil {
    68  		return s.err
    69  	}
    70  	cmds, err := s.store.CmdsWithSeq(req.From, req.Upto)
    71  	res.Cmds = cmds
    72  	return err
    73  }
    74  
    75  func (s *service) NextCmd(req *api.NextCmdRequest, res *api.NextCmdResponse) error {
    76  	if s.err != nil {
    77  		return s.err
    78  	}
    79  	cmd, err := s.store.NextCmd(req.From, req.Prefix)
    80  	res.Seq, res.Text = cmd.Seq, cmd.Text
    81  	return err
    82  }
    83  
    84  func (s *service) PrevCmd(req *api.PrevCmdRequest, res *api.PrevCmdResponse) error {
    85  	if s.err != nil {
    86  		return s.err
    87  	}
    88  	cmd, err := s.store.PrevCmd(req.Upto, req.Prefix)
    89  	res.Seq, res.Text = cmd.Seq, cmd.Text
    90  	return err
    91  }
    92  
    93  func (s *service) AddDir(req *api.AddDirRequest, res *api.AddDirResponse) error {
    94  	if s.err != nil {
    95  		return s.err
    96  	}
    97  	return s.store.AddDir(req.Dir, req.IncFactor)
    98  }
    99  
   100  func (s *service) DelDir(req *api.DelDirRequest, res *api.DelDirResponse) error {
   101  	if s.err != nil {
   102  		return s.err
   103  	}
   104  	return s.store.DelDir(req.Dir)
   105  }
   106  
   107  func (s *service) Dirs(req *api.DirsRequest, res *api.DirsResponse) error {
   108  	if s.err != nil {
   109  		return s.err
   110  	}
   111  	dirs, err := s.store.Dirs(req.Blacklist)
   112  	res.Dirs = dirs
   113  	return err
   114  }