1
0
Fork 0
mirror of https://github.com/postmannen/ctrl.git synced 2025-01-20 22:52:13 +00:00

Renamed TextLogging to REQTextToLogFile

This commit is contained in:
postmannen 2021-04-05 08:17:04 +02:00
parent af06e47b7b
commit 5999d65fb6
5 changed files with 31 additions and 27 deletions

View file

@ -103,7 +103,7 @@ type Configuration struct {
// Subscriber for hello messages // Subscriber for hello messages
StartSubSayHello flagNodeSlice StartSubSayHello flagNodeSlice
// Subscriber for text logging // Subscriber for text logging
StartSubTextLogging flagNodeSlice StartSubREQTextToLogFile flagNodeSlice
// Subscriber for Echo Request // Subscriber for Echo Request
StartSubEchoRequest flagNodeSlice StartSubEchoRequest flagNodeSlice
// Subscriber for Echo Reply // Subscriber for Echo Reply
@ -135,7 +135,7 @@ func newConfigurationDefaults() Configuration {
CentralNodeName: "", CentralNodeName: "",
StartSubErrorLog: flagNodeSlice{Values: []node{}}, StartSubErrorLog: flagNodeSlice{Values: []node{}},
StartSubSayHello: flagNodeSlice{OK: true, Values: []node{"*"}}, StartSubSayHello: flagNodeSlice{OK: true, Values: []node{"*"}},
StartSubTextLogging: flagNodeSlice{OK: true, Values: []node{"*"}}, StartSubREQTextToLogFile: flagNodeSlice{OK: true, Values: []node{"*"}},
StartSubEchoRequest: flagNodeSlice{OK: true, Values: []node{"*"}}, StartSubEchoRequest: flagNodeSlice{OK: true, Values: []node{"*"}},
StartSubEchoReply: flagNodeSlice{OK: true, Values: []node{"*"}}, StartSubEchoReply: flagNodeSlice{OK: true, Values: []node{"*"}},
StartSubREQCliCommand: flagNodeSlice{OK: true, Values: []node{"*"}}, StartSubREQCliCommand: flagNodeSlice{OK: true, Values: []node{"*"}},
@ -174,7 +174,7 @@ func (c *Configuration) CheckFlags() error {
flag.Var(&c.StartSubErrorLog, "startSubErrorLog", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.") flag.Var(&c.StartSubErrorLog, "startSubErrorLog", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.")
flag.Var(&c.StartSubSayHello, "startSubSayHello", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.") flag.Var(&c.StartSubSayHello, "startSubSayHello", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.")
flag.Var(&c.StartSubTextLogging, "startSubTextLogging", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.") flag.Var(&c.StartSubREQTextToLogFile, "startSubREQTextToLogFile", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.")
flag.Var(&c.StartSubEchoRequest, "startSubEchoRequest", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.") flag.Var(&c.StartSubEchoRequest, "startSubEchoRequest", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.")
flag.Var(&c.StartSubEchoReply, "startSubEchoReply", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.") flag.Var(&c.StartSubEchoReply, "startSubEchoReply", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.")
flag.Var(&c.StartSubREQCliCommand, "startSubREQCliCommand", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.") flag.Var(&c.StartSubREQCliCommand, "startSubREQCliCommand", "Specify comma separated list for nodes to allow messages from. Use \"*\" for from all. Value RST will turn off subscriber.")

View file

@ -29,6 +29,10 @@ SubscribersDataFolder = "./data"
OK = true OK = true
Values = ["*"] Values = ["*"]
[StartSubREQTextToLogFile]
OK = true
Values = ["*"]
[StartSubREQnCliCommand] [StartSubREQnCliCommand]
OK = true OK = true
Values = ["*"] Values = ["*"]
@ -36,7 +40,3 @@ SubscribersDataFolder = "./data"
[StartSubSayHello] [StartSubSayHello]
OK = true OK = true
Values = ["*"] Values = ["*"]
[StartSubTextLogging]
OK = true
Values = ["*"]

View file

@ -1,8 +1,9 @@
[ [
{ {
"label": "random_text_log",
"toNode": "central", "toNode": "central",
"data": ["some message sent from a ship for testing\n"], "data": ["some message sent from a ship for testing\n"],
"commandOrEvent":"EventACK", "commandOrEvent":"EventACK",
"method":"TextLogging" "method":"REQTextToLogFile"
} }
] ]

View file

@ -20,11 +20,11 @@ func (s *server) ProcessesStart() {
} }
// Start a subscriber for textLogging messages // Start a subscriber for textLogging messages
if s.configuration.StartSubTextLogging.OK { if s.configuration.StartSubREQTextToLogFile.OK {
{ {
fmt.Printf("Starting textlogging subscriber: %#v\n", s.nodeName) fmt.Printf("Starting text logging subscriber: %#v\n", s.nodeName)
sub := newSubject(TextLogging, s.nodeName) sub := newSubject(REQTextToLogFile, s.nodeName)
proc := newProcess(s.processes, s.toRingbufferCh, s.configuration, sub, s.errorKernel.errorCh, processKindSubscriber, s.configuration.StartSubTextLogging.Values, nil) proc := newProcess(s.processes, s.toRingbufferCh, s.configuration, sub, s.errorKernel.errorCh, processKindSubscriber, s.configuration.StartSubREQTextToLogFile.Values, nil)
// fmt.Printf("*** %#v\n", proc) // fmt.Printf("*** %#v\n", proc)
go proc.spawnWorker(s) go proc.spawnWorker(s)
} }

View file

@ -73,20 +73,17 @@ const (
// The data field is a slice of strings where the first string // The data field is a slice of strings where the first string
// value should be the command, and the following the arguments. // value should be the command, and the following the arguments.
REQnCliCommand Method = "REQnCliCommand" REQnCliCommand Method = "REQnCliCommand"
// Will generate a reply for a CLICommandRequest. // Send text to be logged to the console.
// This type is normally not used by the user when creating
// a message. It is used in creating the reply message with
// request messages. It is also used when defining a process to
// start up for receiving the CLICommand request messages.
// The data field is a slice of strings where the first string // The data field is a slice of strings where the first string
// value should be the command, and the following the arguments. // value should be the command, and the following the arguments.
REQTextToConsole Method = "REQTextToConsole" REQTextToConsole Method = "REQTextToConsole"
// Send text logging to some host. // Send text logging to some host by appending the output to a
// file, if the file do not exist we create it.
// A file with the full subject+hostName will be created on // A file with the full subject+hostName will be created on
// the receiving end. // the receiving end.
// The data field is a slice of strings where the values of the // The data field is a slice of strings where the values of the
// slice will be written to the log file. // slice will be written to the log file.
TextLogging Method = "TextLogging" REQTextToLogFile Method = "REQTextToLogFile"
// Send Hello I'm here message. // Send Hello I'm here message.
SayHello Method = "SayHello" SayHello Method = "SayHello"
// Error log methods to centralError node. // Error log methods to centralError node.
@ -125,7 +122,7 @@ func (m Method) GetMethodsAvailable() MethodsAvailable {
REQTextToConsole: methodREQTextToConsole{ REQTextToConsole: methodREQTextToConsole{
commandOrEvent: EventACK, commandOrEvent: EventACK,
}, },
TextLogging: methodTextLogging{ REQTextToLogFile: methodREQTextToLogFile{
commandOrEvent: EventACK, commandOrEvent: EventACK,
}, },
SayHello: methodSayHello{ SayHello: methodSayHello{
@ -224,7 +221,7 @@ func (m methodREQOpCommand) handler(proc process, message Message, node string)
// Prepare and queue for sending a new message with the output // Prepare and queue for sending a new message with the output
// of the action executed. // of the action executed.
newReplyMessage(proc, message, TextLogging, out) newReplyMessage(proc, message, REQTextToLogFile, out)
}() }()
ackMsg := []byte(fmt.Sprintf("confirmed from node: %v: messageID: %v\n---\n", node, message.ID)) ackMsg := []byte(fmt.Sprintf("confirmed from node: %v: messageID: %v\n---\n", node, message.ID))
@ -260,30 +257,36 @@ func newReplyMessage(proc process, message Message, method Method, outData []byt
//-- //--
} }
type methodTextLogging struct { type methodREQTextToLogFile struct {
commandOrEvent CommandOrEvent commandOrEvent CommandOrEvent
} }
func (m methodTextLogging) getKind() CommandOrEvent { func (m methodREQTextToLogFile) getKind() CommandOrEvent {
return m.commandOrEvent return m.commandOrEvent
} }
func (m methodTextLogging) handler(proc process, message Message, node string) ([]byte, error) { func (m methodREQTextToLogFile) handler(proc process, message Message, node string) ([]byte, error) {
// If it was a request type message we want to check what the initial messages // If it was a request type message we want to check what the initial messages
// method, so we can use that in creating the file name to store the data. // method, so we can use that in creating the file name to store the data.
fmt.Printf(" ** DEBUG: %v\n", message.PreviousMessage) fmt.Printf(" ** DEBUG: %v\n", message.PreviousMessage)
var fileName string var fileName string
var folderTree string
switch { switch {
case message.PreviousMessage == nil:
// If this was a direct request there are no previous message to take
// information from, so we use the one that are in the current mesage.
fileName = fmt.Sprintf("%v.%v.log", message.ToNode, message.Method)
folderTree = filepath.Join(proc.configuration.SubscribersDataFolder, message.Label, string(message.FromNode))
case message.PreviousMessage.ToNode != "": case message.PreviousMessage.ToNode != "":
fileName = fmt.Sprintf("%v.%v.log", message.PreviousMessage.ToNode, message.PreviousMessage.Method) fileName = fmt.Sprintf("%v.%v.log", message.PreviousMessage.ToNode, message.PreviousMessage.Method)
folderTree = filepath.Join(proc.configuration.SubscribersDataFolder, message.PreviousMessage.Label, string(message.PreviousMessage.ToNode))
case message.PreviousMessage.ToNode == "": case message.PreviousMessage.ToNode == "":
fileName = fmt.Sprintf("%v.%v.log", message.FromNode, message.Method) fileName = fmt.Sprintf("%v.%v.log", message.FromNode, message.Method)
folderTree = filepath.Join(proc.configuration.SubscribersDataFolder, message.PreviousMessage.Label, string(message.PreviousMessage.ToNode))
} }
// Check if folder structure exist, if not create it. // Check if folder structure exist, if not create it.
folderTree := filepath.Join(proc.configuration.SubscribersDataFolder, message.PreviousMessage.Label, string(message.PreviousMessage.ToNode))
if _, err := os.Stat(folderTree); os.IsNotExist(err) { if _, err := os.Stat(folderTree); os.IsNotExist(err) {
err := os.MkdirAll(folderTree, 0700) err := os.MkdirAll(folderTree, 0700)
if err != nil { if err != nil {
@ -436,7 +439,7 @@ func (m methodREQCliCommand) handler(proc process, message Message, node string)
// Prepare and queue for sending a new message with the output // Prepare and queue for sending a new message with the output
// of the action executed. // of the action executed.
newReplyMessage(proc, message, TextLogging, out) newReplyMessage(proc, message, REQTextToLogFile, out)
} }
}() }()