diff --git a/Makefile b/Makefile index 300f89a..3c2e4aa 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ GOCLEAN=$(GOCMD) clean GOTEST=$(GOCMD) test GOGET=$(GOCMD) get GOMOD=$(GOCMD) mod +GOFMT=$(GOCMD)fmt # Folders definitions BINARY_FOLDER=bin @@ -56,6 +57,7 @@ deps: $(GOGET) github.com/CoderSergiy/golib/tools build: + $(GOFMT) -s ./example/*.go $(GOBUILD) -o $(BINARY_FOLDER)/server -v ./server.go depsupdate: diff --git a/example/callbacks.go b/example/callbacks.go index 801cffa..bcd2aab 100644 --- a/example/callbacks.go +++ b/example/callbacks.go @@ -11,28 +11,28 @@ package example import ( - "time" - "net/http" "github.com/CoderSergiy/golib/logging" "github.com/CoderSergiy/ocpp16-go/core" "github.com/CoderSergiy/ocpp16-go/messages" + "net/http" + "time" ) const ( - WEBSOCKET_KEEP_OPEN bool = true - WEBSOCKET_CLOSE bool = false + WEBSOCKET_KEEP_OPEN bool = true + WEBSOCKET_CLOSE bool = false ) /**************************************************************************************** * Struct : OCPPHandlers - * + * * Purpose : Handles struct for each connected charger * *****************************************************************************************/ type OCPPHandlers struct { - Charger Charger // Charger struct which connected to the server - Log logging.Log // Pointer to the log - txQueue SimpleMessageQueue // For example queue will be here + Charger Charger // Charger struct which connected to the server + Log logging.Log // Pointer to the log + txQueue SimpleMessageQueue // For example queue will be here } /**************************************************************************************** @@ -44,7 +44,7 @@ type OCPPHandlers struct { * Input : Nothing * * Return : OCPPHandlers object -*/ + */ func OCPPHandlersConstructor() OCPPHandlers { ocppHandlers := OCPPHandlers{} ocppHandlers.init() @@ -60,9 +60,9 @@ func OCPPHandlersConstructor() OCPPHandlers { * Input : Nothing * * Return : Nothing -*/ -func (cs *OCPPHandlers) init () { - cs.txQueue.init() // Clear queues + */ +func (cs *OCPPHandlers) init() { + cs.txQueue.init() // Clear queues } /**************************************************************************************** @@ -79,9 +79,9 @@ func (cs *OCPPHandlers) init () { * error - if happened, nil otherwise * bool - false - when connection to charger needs to be closed, otherwise true * -*/ -func (cs *OCPPHandlers) finaliseReqHandler (callMessage messages.CallMessage, responseMessage messages.Message, socketStatus bool) (string, error, bool) { - + */ +func (cs *OCPPHandlers) finaliseReqHandler(callMessage messages.CallMessage, responseMessage messages.Message, socketStatus bool) (string, error, bool) { + // Convert response message to string format messageStr, err := responseMessage.ToString() if err != nil { @@ -104,9 +104,9 @@ func (cs *OCPPHandlers) finaliseReqHandler (callMessage messages.CallMessage, re * Return : error - if happened, nil otherwise * bool - false - when connection to charger needs to be closed, otherwise true * -*/ -func (cs *OCPPHandlers) finaliseRespHandler (uniqueID string, socketStatus bool) (error, bool) { - + */ +func (cs *OCPPHandlers) finaliseRespHandler(uniqueID string, socketStatus bool) (error, bool) { + // Before end the handler delete message from txQueue err := cs.txQueue.DeleteByUniqueID(uniqueID) @@ -125,10 +125,10 @@ func (cs *OCPPHandlers) finaliseRespHandler (uniqueID string, socketStatus bool) * * Input : uniqueID string - message's unique ID * - * Return : message's action in string format + * Return : message's action in string format * -*/ -func (cs *OCPPHandlers) GetActionHandler (uniqueID string) string { + */ +func (cs *OCPPHandlers) GetActionHandler(uniqueID string) string { // Get action from tx queue by UniqueID message, success := cs.txQueue.GetMessage(uniqueID) @@ -142,10 +142,6 @@ func (cs *OCPPHandlers) GetActionHandler (uniqueID string) string { return "" } - - - - /**************************************************************************************** * * Function : OCPPHandlers::Authorisation @@ -153,12 +149,12 @@ func (cs *OCPPHandlers) GetActionHandler (uniqueID string) string { * Purpose : Using to Authorise charger before allow websocket connection * * Input : chargerName string - charger name to be validated - * request *http.Request - http request object + * request *http.Request - http request object * * Return : true - when charger is authorised, otherwise false * -*/ -func (cs *OCPPHandlers) Authorisation (chargerName string, request *http.Request) (bool) { + */ +func (cs *OCPPHandlers) Authorisation(chargerName string, request *http.Request) bool { cs.Log.Info_Log("Auth request from URL '%s'", request.RequestURI) cs.Log.Info_Log("Header is '%s'", request.Header["Authorisation"]) @@ -169,8 +165,6 @@ func (cs *OCPPHandlers) Authorisation (chargerName string, request *http.Request return true } - - /* Define Call Handlers ========================================================================================= ================================================================================================================= */ @@ -187,8 +181,8 @@ func (cs *OCPPHandlers) Authorisation (chargerName string, request *http.Request * error - if happened, nil otherwise * bool - false - when connection to charger needs to be closed, otherwise true * -*/ -func (cs *OCPPHandlers) BootNotificationRequestHandler (callMessage messages.CallMessage) (string, error, bool) { + */ +func (cs *OCPPHandlers) BootNotificationRequestHandler(callMessage messages.CallMessage) (string, error, bool) { cs.Log.Info_Log("[%v] BootNotificationRequest Action", callMessage.UniqueID) // Define registration status for the response @@ -198,12 +192,12 @@ func (cs *OCPPHandlers) BootNotificationRequestHandler (callMessage messages.Cal } //Create payload bootNotificationResp := core.BootNotificationResponse{ - Status: status, + Status: status, HeartbeatInterval: 300, - CurrentTime: time.Now().Format("2006-01-02 15:04:05.000"), + CurrentTime: time.Now().Format("2006-01-02 15:04:05.000"), } // Create CallResult message - callMessageResponse := messages.CallResultMessageWithParam ( + callMessageResponse := messages.CallResultMessageWithParam( callMessage.UniqueID, bootNotificationResp.GetPayload(), ) @@ -223,8 +217,8 @@ func (cs *OCPPHandlers) BootNotificationRequestHandler (callMessage messages.Cal * error - if happened, nil otherwise * bool - false - when connection to charger needs to be closed, otherwise true * -*/ -func (cs *OCPPHandlers) AuthorizeRequestHandler (callMessage messages.CallMessage) (string, error, bool) { + */ +func (cs *OCPPHandlers) AuthorizeRequestHandler(callMessage messages.CallMessage) (string, error, bool) { cs.Log.Info_Log("[%v] AuthorizeRequest Action", callMessage.UniqueID) // Check Auth flag @@ -252,8 +246,8 @@ func (cs *OCPPHandlers) AuthorizeRequestHandler (callMessage messages.CallMessag * error - if happened, nil otherwise * bool - false - when connection to charger needs to be closed, otherwise true * -*/ -func (cs *OCPPHandlers) HeartbeatRequestHandler (callMessage messages.CallMessage) (string, error, bool) { + */ +func (cs *OCPPHandlers) HeartbeatRequestHandler(callMessage messages.CallMessage) (string, error, bool) { cs.Log.Info_Log("[%v] HeartbeatRequest Action", callMessage.UniqueID) // Create payload of the heartbeat response @@ -261,7 +255,7 @@ func (cs *OCPPHandlers) HeartbeatRequestHandler (callMessage messages.CallMessag heartBeatResponse.Init() // Create CallResultMessage - callMessageResponse := messages.CallResultMessageWithParam ( + callMessageResponse := messages.CallResultMessageWithParam( callMessage.UniqueID, heartBeatResponse.GetPayload(), ) @@ -269,10 +263,6 @@ func (cs *OCPPHandlers) HeartbeatRequestHandler (callMessage messages.CallMessag return cs.finaliseReqHandler(callMessage, &callMessageResponse, WEBSOCKET_KEEP_OPEN) } - - - - /* Define Response Handlers =================================================================================== =============================================================================================================== */ @@ -289,8 +279,8 @@ func (cs *OCPPHandlers) HeartbeatRequestHandler (callMessage messages.CallMessag * error - if happened, nil otherwise * bool - false - when connection to charger needs to be closed, otherwise true * -*/ -func (cs *OCPPHandlers) AuthorizeResponseHandler (callResultMessage messages.CallResultMessage) (error, bool) { + */ +func (cs *OCPPHandlers) AuthorizeResponseHandler(callResultMessage messages.CallResultMessage) (error, bool) { cs.Log.Info_Log("[%v] AuthorizeResponse Action", callResultMessage.UniqueID) // Perform Auth Routine @@ -298,10 +288,6 @@ func (cs *OCPPHandlers) AuthorizeResponseHandler (callResultMessage messages.Cal return cs.finaliseRespHandler(callResultMessage.UniqueID, WEBSOCKET_KEEP_OPEN) } - - - - /* Define Error Handler ============================================================================== ====================================================================================================== */ @@ -318,8 +304,8 @@ func (cs *OCPPHandlers) AuthorizeResponseHandler (callResultMessage messages.Cal * error - if happened, nil otherwise * bool - false - when connection to charger needs to be closed, otherwise true * -*/ -func (cs *OCPPHandlers) OCPPErrorHandler (callErrortMessage messages.CallErrorMessage) (error, bool) { + */ +func (cs *OCPPHandlers) OCPPErrorHandler(callErrortMessage messages.CallErrorMessage) (error, bool) { cs.Log.Info_Log("[%v] OCPPErrorHandler", callErrortMessage.UniqueID) // Handle OCPP error diff --git a/example/simplequeue.go b/example/simplequeue.go index d0a7033..104a0b6 100644 --- a/example/simplequeue.go +++ b/example/simplequeue.go @@ -11,43 +11,42 @@ package example import ( + "encoding/json" + "errors" "fmt" "io/ioutil" "sync" - "errors" - "encoding/json" ) - type QueueMessageType int const ( - MESSAGE_TYPE_SEND QueueMessageType = 1 - MESSAGE_TYPE_SENT QueueMessageType = 2 - MESSAGE_TYPE_RECEIVED QueueMessageType = 3 + MESSAGE_TYPE_SEND QueueMessageType = 1 + MESSAGE_TYPE_SENT QueueMessageType = 2 + MESSAGE_TYPE_RECEIVED QueueMessageType = 3 ) /**************************************************************************************** * Struct : Message - * + * * Purpose : Struct handles message's parameters * *****************************************************************************************/ type Message struct { - Action string // Action of the message - Content string // Message content + Action string // Action of the message + Content string // Message content } /**************************************************************************************** * Struct : SimpleMessageQueue - * + * * Purpose : Struct handles messages queue routines * *****************************************************************************************/ type SimpleMessageQueue struct { - MaxSize int - MessageQueue map[string]Message - queueMux sync.Mutex + MaxSize int + MessageQueue map[string]Message + queueMux sync.Mutex } /**************************************************************************************** @@ -59,8 +58,8 @@ type SimpleMessageQueue struct { * Input : Nothing * * Return : Nothing -*/ -func (queue *SimpleMessageQueue) init () { + */ +func (queue *SimpleMessageQueue) init() { queue.MaxSize = 10 queue.MessageQueue = make(map[string]Message) } @@ -76,8 +75,8 @@ func (queue *SimpleMessageQueue) init () { * * Return : error - if happened, nil otherwise * -*/ -func (queue *SimpleMessageQueue) Add (uniqueID string, message Message) error { + */ +func (queue *SimpleMessageQueue) Add(uniqueID string, message Message) error { // Lock the queue before any changes queue.queueMux.Lock() defer queue.queueMux.Unlock() @@ -103,8 +102,8 @@ func (queue *SimpleMessageQueue) Add (uniqueID string, message Message) error { * * Return : error - if happened, nil otherwise * -*/ -func (queue *SimpleMessageQueue) DeleteByUniqueID (uniqueID string) error { + */ +func (queue *SimpleMessageQueue) DeleteByUniqueID(uniqueID string) error { // Lock the queue before any changes queue.queueMux.Lock() defer queue.queueMux.Unlock() @@ -130,8 +129,8 @@ func (queue *SimpleMessageQueue) DeleteByUniqueID (uniqueID string) error { * Return : Message * bool - true when message exists, false otherwise * -*/ -func (queue *SimpleMessageQueue) GetMessage (uniqueID string) (Message, bool) { + */ +func (queue *SimpleMessageQueue) GetMessage(uniqueID string) (Message, bool) { // Check if uniqueID is exists in the queue if message, isKeyPresent := queue.MessageQueue[uniqueID]; isKeyPresent { // Return message @@ -151,40 +150,34 @@ func (queue *SimpleMessageQueue) GetMessage (uniqueID string) (Message, bool) { * * Return : string - Parameters of the queue in the text format * -*/ -func (queue *SimpleMessageQueue) printStatus () string { + */ +func (queue *SimpleMessageQueue) printStatus() string { return fmt.Sprintf("Size of the queue is %v where max size set to %v", len(queue.MessageQueue), queue.MaxSize) } - - - - - - /**************************************************************************************** * Struct : Charger - * + * * Purpose : Struct handles charger parameters in the gorutines * *****************************************************************************************/ type Charger struct { - AuthToken string - HeartBeatInterval int - AuthConnection bool - WebSocketConnected bool - InboundIP string + AuthToken string + HeartBeatInterval int + AuthConnection bool + WebSocketConnected bool + InboundIP string } /**************************************************************************************** * Struct : Configs - * + * * Purpose : Object handles configurations from the file * *****************************************************************************************/ type Configs struct { - Chargers map[string]Charger `json:"Chargers"` - MaxQueueSize int `json:"MaxQueueSize"` + Chargers map[string]Charger `json:"Chargers"` + MaxQueueSize int `json:"MaxQueueSize"` } /**************************************************************************************** @@ -196,7 +189,7 @@ type Configs struct { * Input : Nothing * * Return : Configs object -*/ + */ func ServerConfigsConstructor() Configs { configs := Configs{} configs.init() @@ -212,7 +205,7 @@ func ServerConfigsConstructor() Configs { * Input : Nothing * * Return : Nothing -*/ + */ func (conf *Configs) init() { conf.Chargers = make(map[string]Charger) conf.MaxQueueSize = 10 @@ -228,8 +221,8 @@ func (conf *Configs) init() { * * Return : Charger - charger object * error - error if happened -*/ -func (conf *Configs) GetChargerObj (chargerName string) (Charger, error) { + */ +func (conf *Configs) GetChargerObj(chargerName string) (Charger, error) { if charger, isKeyPresent := conf.Chargers[chargerName]; isKeyPresent { // Requested charger is exists in the configs @@ -241,29 +234,27 @@ func (conf *Configs) GetChargerObj (chargerName string) (Charger, error) { } - - /**************************************************************************************** * Struct : ChargerFromFile - * + * * Purpose : Struct handles charger's parameters from config file * *****************************************************************************************/ type ChargerFromFile struct { - Name string `json:"Name"` - Authorization string `json:"Authorization"` - HeartBeatInterval int `json:"HeartBeatInterval"` + Name string `json:"Name"` + Authorization string `json:"Authorization"` + HeartBeatInterval int `json:"HeartBeatInterval"` } /**************************************************************************************** * Struct : FileConfigs - * + * * Purpose : Struct handles configurations from file * *****************************************************************************************/ type FileConfigs struct { - Chargers []ChargerFromFile `json:"Chargers"` - MaxQueueSize int `json:"MaxQueueSize"` + Chargers []ChargerFromFile `json:"Chargers"` + MaxQueueSize int `json:"MaxQueueSize"` } /**************************************************************************************** @@ -276,7 +267,7 @@ type FileConfigs struct { * * Return : Configs - Configs object * error - error if happened -*/ + */ func SetConfigsFromFile(fileName string) (Configs, error) { configs := Configs{} configs.init() @@ -285,12 +276,12 @@ func SetConfigsFromFile(fileName string) (Configs, error) { if fileName == "" { return configs, errors.New("Filename is empty") } - + // Read file context to the buffer - fileContentBytes, fileError := ioutil.ReadFile(fileName) - if fileError != nil { - return configs, fileError - } + fileContentBytes, fileError := ioutil.ReadFile(fileName) + if fileError != nil { + return configs, fileError + } // Unmarshal the content of the file to the Configs struct conf := FileConfigs{} @@ -309,6 +300,4 @@ func SetConfigsFromFile(fileName string) (Configs, error) { } return configs, nil -} - - +} \ No newline at end of file diff --git a/messages/call.go b/messages/call.go index aecf68d..441be2b 100644 --- a/messages/call.go +++ b/messages/call.go @@ -15,20 +15,20 @@ import ( ) const ( - MESSAGE_TYPE_CALL MessageType = 2 + MESSAGE_TYPE_CALL MessageType = 2 ) /**************************************************************************************** * Struct : CallMessage - * + * * Purpose : Object handles the Call message structure * *****************************************************************************************/ type CallMessage struct { - UniqueID string - Action string - Payload map[string]interface{} - Signature string + UniqueID string + Action string + Payload map[string]interface{} + Signature string } /**************************************************************************************** @@ -38,8 +38,8 @@ type CallMessage struct { * Purpose : Creates a new instance of the CallMessage object * * Return : CallMessage object -*/ -func CallMessageConstructor () CallMessage { + */ +func CallMessageConstructor() CallMessage { //Define CallMessage object callMessageObj := CallMessage{} callMessageObj.init() @@ -55,8 +55,8 @@ func CallMessageConstructor () CallMessage { * Input : rawMessage string - raw message to parse and validate * * Return : CallMessage object -*/ -func CreateCallMessageCreator (rawMessage string) CallMessage { + */ +func CreateCallMessageCreator(rawMessage string) CallMessage { callMessageObj := CallMessage{} // Load JSON from string and check JSON structure @@ -64,7 +64,7 @@ func CreateCallMessageCreator (rawMessage string) CallMessage { return CallMessage{} } - // Validate + // Validate return callMessageObj } @@ -76,7 +76,7 @@ func CreateCallMessageCreator (rawMessage string) CallMessage { * Purpose : Creates a new instance of the CallMessage object * * Return : nil is cannot unmarshal message, otherwise CallMessage object -*/ + */ /* func CreateCallMessageConstructor (uniqueID string, action string, payload map[string]interface{}) CallMessage { callMessageObj := CallMessage{} @@ -94,7 +94,7 @@ func CreateCallMessageConstructor (uniqueID string, action string, payload map[s * Purpose : Initiate variables of the CallMessage structure * * Return : Nothing -*/ + */ func (callMessage *CallMessage) init() { callMessage.UniqueID = "" callMessage.Action = "" @@ -112,8 +112,8 @@ func (callMessage *CallMessage) init() { * value string - parameter value * * Return : Nothing -*/ -func (callMessage *CallMessage) addPayload (key string, value string) { + */ +func (callMessage *CallMessage) addPayload(key string, value string) { callMessage.Payload[key] = value } @@ -125,8 +125,8 @@ func (callMessage *CallMessage) addPayload (key string, value string) { * Purpose : Return Call message type * * Return : MessageType -*/ -func (callMessage CallMessage) getMessageType () MessageType { + */ +func (callMessage CallMessage) getMessageType() MessageType { return MESSAGE_TYPE_CALL } @@ -139,8 +139,8 @@ func (callMessage CallMessage) getMessageType () MessageType { * Input : rawMessage string - raw message to parse and validate * * Return : error when cannot unmarshal message, otherwise nil -*/ -func (callMessage *CallMessage) unpackMessage (rawMessage string) error { + */ +func (callMessage *CallMessage) unpackMessage(rawMessage string) error { var messageTypeID int parametersArray := []interface{}{ &messageTypeID, @@ -169,8 +169,8 @@ func (callMessage *CallMessage) unpackMessage (rawMessage string) error { * * Return : string * error if happened, nil otherwise -*/ -func (callMessage *CallMessage) ToString () (string,error) { + */ +func (callMessage *CallMessage) ToString() (string, error) { messageType := int(MESSAGE_TYPE_CALL) var parametersArray []interface{} if callMessage.Signature == "" { diff --git a/messages/callerror.go b/messages/callerror.go index 7823e1e..dfa21c7 100644 --- a/messages/callerror.go +++ b/messages/callerror.go @@ -14,19 +14,19 @@ import ( "errors" ) -const MESSAGE_TYPE_CALL_ERROR MessageType = 4 +const MESSAGE_TYPE_CALL_ERROR MessageType = 4 /**************************************************************************************** * Struct : CallErrorMessage - * + * * Purpose : Object handles the Call Error message structure * *****************************************************************************************/ type CallErrorMessage struct { - UniqueID string - ErrorCode string - ErrorDescription string - ErrorDetails map[string]interface{} + UniqueID string + ErrorCode string + ErrorDescription string + ErrorDetails map[string]interface{} } /**************************************************************************************** @@ -36,8 +36,8 @@ type CallErrorMessage struct { * Purpose : Creates a new instance of the CallErrorMessage object * * Return : CallErrorMessage -*/ -func CallErrorMessageConstructor () CallErrorMessage { + */ +func CallErrorMessageConstructor() CallErrorMessage { callErrorObj := CallErrorMessage{} callErrorObj.init() return callErrorObj @@ -52,8 +52,8 @@ func CallErrorMessageConstructor () CallErrorMessage { * Input : rawMessage string - raw message to parse and validate * * Return : CallErrorMessage -*/ -func CallErrorMessageCreator (rawMessage string) CallErrorMessage { + */ +func CallErrorMessageCreator(rawMessage string) CallErrorMessage { callErrorObj := CallErrorMessage{} // Load JSON from string and check JSON structure @@ -61,7 +61,7 @@ func CallErrorMessageCreator (rawMessage string) CallErrorMessage { return CallErrorMessage{} } - // Validate + // Validate return callErrorObj } @@ -73,8 +73,8 @@ func CallErrorMessageCreator (rawMessage string) CallErrorMessage { * Purpose : Initiate variables of the CallErrorMessage structure * * Return : Nothing -*/ -func (cem *CallErrorMessage) init () { + */ +func (cem *CallErrorMessage) init() { cem.UniqueID = "" cem.ErrorCode = "" cem.ErrorDescription = "" @@ -88,7 +88,7 @@ func (cem *CallErrorMessage) init () { * Purpose : Creates a new instance of the CallMessage object * * Return : nil is cannot unmarshal message, otherwise CallMessage object -*/ + */ /* func CreateCallError (uniqueID string, errorCode string, errorDescription string, errorDetails map[string]interface{}) string { ce := CallErrorConstructor() @@ -107,8 +107,8 @@ func CreateCallError (uniqueID string, errorCode string, errorDescription string * Purpose : Return Call Error message type * * Return : MessageType -*/ -func (callErrorMessage CallErrorMessage) getMessageType () MessageType { + */ +func (callErrorMessage CallErrorMessage) getMessageType() MessageType { return MESSAGE_TYPE_CALL_ERROR } @@ -121,8 +121,8 @@ func (callErrorMessage CallErrorMessage) getMessageType () MessageType { * Input : rawMessage string - raw message to parse and validate * * Return : error when cannot unmarshal message, otherwise nil -*/ -func (callErrorMessage *CallErrorMessage) unpackMessage (raw_message string) error { + */ +func (callErrorMessage *CallErrorMessage) unpackMessage(raw_message string) error { var messageTypeID int tmp := []interface{}{ &messageTypeID, @@ -153,8 +153,8 @@ func (callErrorMessage *CallErrorMessage) unpackMessage (raw_message string) err * * Return : string * error if happened, nil otherwise -*/ -func (callErrorMessage *CallErrorMessage) ToString () (string,error) { + */ +func (callErrorMessage *CallErrorMessage) ToString() (string, error) { messageTypeID := MESSAGE_TYPE_CALL_ERROR var parametersArray []interface{} diff --git a/messages/callresult.go b/messages/callresult.go index add59f1..7b96e1f 100644 --- a/messages/callresult.go +++ b/messages/callresult.go @@ -14,18 +14,18 @@ import ( "errors" ) -const MESSAGE_TYPE_CALL_RESULT MessageType = 3 +const MESSAGE_TYPE_CALL_RESULT MessageType = 3 /**************************************************************************************** * Struct : CallResultMessage - * + * * Purpose : Object handles the Call Result message structure * *****************************************************************************************/ type CallResultMessage struct { - UniqueID string - Payload map[string]interface{} - Signature string + UniqueID string + Payload map[string]interface{} + Signature string } /**************************************************************************************** @@ -35,9 +35,9 @@ type CallResultMessage struct { * Purpose : Creates a new instance of the CallResultMessage object * * Return : CallResultMessage -*/ + */ -func CallResultMessageConstructor () CallResultMessage { +func CallResultMessageConstructor() CallResultMessage { callResultObj := CallResultMessage{} callResultObj.init() return callResultObj @@ -53,7 +53,7 @@ func CallResultMessageConstructor () CallResultMessage { * payload map[string]interface{} - payload of the message * * Return : CallResultMessage -*/ + */ func CallResultMessageWithParam(uniqueID string, payload map[string]interface{}) CallResultMessage { callResultObj := CallResultMessage{} callResultObj.UniqueID = uniqueID @@ -62,7 +62,6 @@ func CallResultMessageWithParam(uniqueID string, payload map[string]interface{}) return callResultObj } - /**************************************************************************************** * * Function : CallResultMessage::init @@ -70,7 +69,7 @@ func CallResultMessageWithParam(uniqueID string, payload map[string]interface{}) * Purpose : Initiate variables of the CallResultMessage structure * * Return : Nothing -*/ + */ func (callResultMessage *CallResultMessage) init() { callResultMessage.UniqueID = "" callResultMessage.Payload = make(map[string]interface{}) @@ -86,8 +85,8 @@ func (callResultMessage *CallResultMessage) init() { * Input : rawMessage string - raw message to parse and validate * * Return : CallResultMessage -*/ -func CallResultMessageCreator (rawMessage string) CallResultMessage { + */ +func CallResultMessageCreator(rawMessage string) CallResultMessage { callResultObj := CallResultMessage{} // Load JSON from string and check JSON structure @@ -95,7 +94,7 @@ func CallResultMessageCreator (rawMessage string) CallResultMessage { return CallResultMessage{} } - // Validate + // Validate return callResultObj } @@ -107,8 +106,8 @@ func CallResultMessageCreator (rawMessage string) CallResultMessage { * Purpose : Return Call Result message type * * Return : MessageType -*/ -func (crm CallResultMessage) getMessageType () MessageType { + */ +func (crm CallResultMessage) getMessageType() MessageType { return MESSAGE_TYPE_CALL_RESULT } @@ -121,8 +120,8 @@ func (crm CallResultMessage) getMessageType () MessageType { * Input : rawMessage string - raw message to parse and validate * * Return : error when cannot unmarshal message, otherwise nil -*/ -func (callResultMessage *CallResultMessage) unpackMessage (rawMessage string) error { + */ +func (callResultMessage *CallResultMessage) unpackMessage(rawMessage string) error { var messageTypeID int parametersArray := []interface{}{ &messageTypeID, @@ -152,8 +151,8 @@ func (callResultMessage *CallResultMessage) unpackMessage (rawMessage string) er * * Return : string * error if happened, nil otherwise -*/ -func (callResultMessage *CallResultMessage) ToString () (string,error) { + */ +func (callResultMessage *CallResultMessage) ToString() (string, error) { var parametersArray []interface{} if callResultMessage.Signature == "" { diff --git a/messages/message.go b/messages/message.go index 7299d11..d5261b5 100644 --- a/messages/message.go +++ b/messages/message.go @@ -13,11 +13,11 @@ type MessageType int /**************************************************************************************** * Interface : Message - * + * * Purpose : Interface for Call, CallResult and CallError * *****************************************************************************************/ type Message interface { - getMessageType () MessageType - ToString () (string,error) + getMessageType() MessageType + ToString() (string, error) } \ No newline at end of file diff --git a/server.go b/server.go index c862d16..1b6b97c 100644 --- a/server.go +++ b/server.go @@ -11,38 +11,37 @@ package main import ( - "github.com/julienschmidt/httprouter" - "net/http" - "time" - "github.com/gorilla/websocket" - "github.com/CoderSergiy/ocpp16-go/example" - "github.com/CoderSergiy/ocpp16-go/core" "github.com/CoderSergiy/golib/logging" "github.com/CoderSergiy/golib/timelib" "github.com/CoderSergiy/golib/tools" + "github.com/CoderSergiy/ocpp16-go/core" + "github.com/CoderSergiy/ocpp16-go/example" + "github.com/gorilla/websocket" + "github.com/julienschmidt/httprouter" + "net/http" + "time" ) const ( - configFilePath string = "/tmp/configs.json" - logFilesPath string = "/tmp/logs/server" + configFilePath string = "/tmp/configs.json" + logFilesPath string = "/tmp/logs/server" ) var ( - log logging.Log + log logging.Log ServerConfigs example.Configs ) - /**************************************************************************************** * Struct : GoRoutineSet - * + * * Purpose : Handles goroutine parameters * *****************************************************************************************/ type GoRoutineSet struct { - WriteChannel chan string - Active bool - DateCreated int64 + WriteChannel chan string + Active bool + DateCreated int64 } /**************************************************************************************** @@ -53,19 +52,16 @@ type GoRoutineSet struct { * * Input : Nothing * - * Return : GoRoutineSet object -*/ + * Return : GoRoutineSet object + */ func GoRoutineSetConstructor() GoRoutineSet { - gSet := GoRoutineSet{} - gSet.Active = true - gSet.DateCreated = int64(time.Now().Unix()) - gSet.WriteChannel = make (chan string) - return (gSet) + gSet := GoRoutineSet{} + gSet.Active = true + gSet.DateCreated = int64(time.Now().Unix()) + gSet.WriteChannel = make(chan string) + return (gSet) } - - - /**************************************************************************************** * * Function : main @@ -73,7 +69,7 @@ func GoRoutineSetConstructor() GoRoutineSet { * Purpose : Main method to start server * * Return : Nothing -*/ + */ func main() { log = logging.LogConstructor(logFilesPath, true) log.Info_Log("Server started.") @@ -92,12 +88,11 @@ func main() { // Define http router router := httprouter.New() // Set router for the ocpp V1.6 connection in the json format - router.GET("/ocppj/1.6/:chargerName", wsChargerHandler) + router.GET("/ocppj/1.6/:chargerName", wsChargerHandler) // Start server log.Error_Log("Server fata errorr: '%v'", http.ListenAndServe(":8080", router)) } - /**************************************************************************************** * * Function : wsChargerHandler @@ -109,10 +104,10 @@ func main() { * ps httprouter.Params - router parameter * * Return : Nothing -*/ -func wsChargerHandler (w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + */ +func wsChargerHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { tm := timelib.EventTimerConstructor() - log.Info_Log("Handle income request from Host '%v' and Path '%v'", r.URL.Host, r.URL.Path) + log.Info_Log("Handle income request from Host '%v' and Path '%v'", r.URL.Host, r.URL.Path) chargerName := ps.ByName("chargerName") log.Info_Log("HTTP is connected. Charger name '%v'", chargerName) @@ -146,7 +141,7 @@ func wsChargerHandler (w http.ResponseWriter, r *http.Request, ps httprouter.Par log.Info_Log("Websocket is connected. Charger name '%v'", chargerName) // Create log instance with file name "server.{chargerName}" - chargerLog := logging.LogConstructor(logFilesPath + "." + chargerName, true) + chargerLog := logging.LogConstructor(logFilesPath+"."+chargerName, true) //log.Info_Log("Logging in file '%v'", chargerLog.fileName) ocppHandlers := example.OCPPHandlersConstructor() @@ -185,7 +180,7 @@ func wsChargerHandler (w http.ResponseWriter, r *http.Request, ps httprouter.Par * * Return : Nothing * -*/ + */ func logReaderRD(conn *websocket.Conn, chargerName string, gs *GoRoutineSet, ocppHandlers *example.OCPPHandlers, chargerLog *logging.Log) { defer conn.Close() @@ -242,15 +237,15 @@ func logReaderRD(conn *websocket.Conn, chargerName string, gs *GoRoutineSet, ocp * * Return : Nothing * -*/ + */ func logReaderWR(conn *websocket.Conn, chargerName string, gs *GoRoutineSet, chargerLog *logging.Log) { defer conn.Close() - chargerLog.Info_Log("[%v] Start WR gorutine for charger '%v'", tools.GetGoID(), chargerName) + chargerLog.Info_Log("[%v] Start WR gorutine for charger '%v'", tools.GetGoID(), chargerName) for { // Wait for the message from channel - message := <- gs.WriteChannel + message := <-gs.WriteChannel // Check if gorutine must to be finished if gs.Active == false { @@ -260,8 +255,8 @@ func logReaderWR(conn *websocket.Conn, chargerName string, gs *GoRoutineSet, cha //Send response to the charger if err := conn.WriteMessage(websocket.TextMessage, []byte(message)); err != nil { - chargerLog.Error_Log("Send error: '%v'", err) - return + chargerLog.Error_Log("Send error: '%v'", err) + return } chargerLog.Info_Log("Sent to charger '%v'", message) @@ -272,4 +267,4 @@ func logReaderWR(conn *websocket.Conn, chargerName string, gs *GoRoutineSet, cha gs = nil chargerLog.Info_Log("[%v] Writing goroutine is finished", tools.GetGoID()) -} +} \ No newline at end of file