Merge pull request #51 from amiel/publish-and-listen
Use a separate socket path to publish so pomo can publish and listen on different sockets
This commit is contained in:
commit
7d4c4889c4
|
@ -2,6 +2,7 @@ package pomo
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
|
@ -27,6 +28,8 @@ type Config struct {
|
|||
// PublishJson pushes socket updates as a JSON
|
||||
// encoded status message instead of string formatted
|
||||
PublishJson bool `json:"publishJson"`
|
||||
// If Publish is true, provide a socket path to publish to
|
||||
PublishSocketPath string `json:"publishSocketPath"`
|
||||
}
|
||||
|
||||
type ColorMap struct {
|
||||
|
@ -116,5 +119,9 @@ func LoadConfig(configPath string, config *Config) error {
|
|||
if config.IconPath == "" {
|
||||
config.IconPath = path.Join(config.BasePath, "/icon.png")
|
||||
}
|
||||
if config.Publish && (config.PublishSocketPath == "" || config.PublishSocketPath == config.SocketPath) {
|
||||
return fmt.Errorf("'publish' option now requires 'publishSocketPath' which must not be the same as 'socketPath'")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ type Server struct {
|
|||
running bool
|
||||
publish bool
|
||||
publishJson bool
|
||||
socketPath string
|
||||
publishSocketPath string
|
||||
}
|
||||
|
||||
func (s *Server) listen() {
|
||||
|
@ -38,7 +38,7 @@ func (s *Server) listen() {
|
|||
func (s *Server) push() {
|
||||
ticker := time.NewTicker(1 * time.Second)
|
||||
for s.running {
|
||||
conn, err := net.Dial("unix", s.socketPath)
|
||||
conn, err := net.Dial("unix", s.publishSocketPath)
|
||||
if err != nil {
|
||||
<-ticker.C
|
||||
continue
|
||||
|
@ -59,9 +59,9 @@ func (s *Server) Start() {
|
|||
s.running = true
|
||||
if s.publish {
|
||||
go s.push()
|
||||
} else {
|
||||
go s.listen()
|
||||
}
|
||||
|
||||
go s.listen()
|
||||
}
|
||||
|
||||
func (s *Server) Stop() {
|
||||
|
@ -72,13 +72,6 @@ func (s *Server) Stop() {
|
|||
}
|
||||
|
||||
func NewServer(runner *TaskRunner, config *Config) (*Server, error) {
|
||||
if config.Publish {
|
||||
return &Server{
|
||||
runner: runner,
|
||||
publish: true,
|
||||
publishJson: config.PublishJson,
|
||||
socketPath: config.SocketPath}, nil
|
||||
}
|
||||
//check if socket file exists
|
||||
if _, err := os.Stat(config.SocketPath); err == nil {
|
||||
_, err := net.Dial("unix", config.SocketPath)
|
||||
|
@ -94,7 +87,16 @@ func NewServer(runner *TaskRunner, config *Config) (*Server, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Server{listener: listener, runner: runner}, nil
|
||||
|
||||
server := &Server{
|
||||
listener: listener,
|
||||
runner: runner,
|
||||
publish: config.Publish,
|
||||
publishJson: config.PublishJson,
|
||||
publishSocketPath: config.PublishSocketPath,
|
||||
}
|
||||
|
||||
return server, nil
|
||||
}
|
||||
|
||||
// Client makes requests to a listening
|
||||
|
|
Loading…
Reference in New Issue