Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifdef ROS
00032 #include "simple_message/message_handler.h"
00033 #include "simple_message/log_wrapper.h"
00034 #endif
00035
00036 #ifdef MOTOPLUS
00037 #include "message_handler.h"
00038 #include "log_wrapper.h"
00039 #endif
00040
00041
00042 namespace industrial
00043 {
00044 namespace message_handler
00045 {
00046
00047 using namespace industrial::smpl_msg_connection;
00048 using namespace industrial::simple_message;
00049
00050 MessageHandler::MessageHandler(void)
00051 {
00052 this->setConnection(NULL);
00053 this->setMsgType(StandardMsgTypes::INVALID);
00054 }
00055
00056
00057 MessageHandler::~MessageHandler(void)
00058 {
00059 }
00060
00061
00062 bool MessageHandler::init(int msg_type, SmplMsgConnection* connection)
00063 {
00064 bool rtn = false;
00065
00066 if (StandardMsgTypes::INVALID != msg_type)
00067 {
00068 if (NULL != connection)
00069 {
00070 this->setConnection(connection);
00071 this->setMsgType(msg_type);
00072 rtn = true;
00073 }
00074 else
00075 {
00076 LOG_ERROR("Message connection is NULL");
00077 rtn = false;
00078 }
00079 }
00080 else
00081 {
00082 LOG_ERROR("Message handler type: %d, not valid", msg_type);
00083 rtn = false;
00084 }
00085
00086 return rtn;
00087 }
00088
00089
00090
00091 bool MessageHandler::callback(SimpleMessage & in)
00092 {
00093 bool rtn = false;
00094
00095 if (validateMsg(in))
00096 {
00097 this->internalCB(in);
00098 }
00099 else
00100 {
00101 LOG_ERROR("Invalid message passed to callback");
00102 rtn = true;
00103 }
00104
00105 return rtn;
00106 }
00107
00108
00109 bool MessageHandler::validateMsg(SimpleMessage & in)
00110 {
00111 bool rtn = false;
00112
00113 if (in.validateMessage())
00114 {
00115 if (in.getMessageType() == this->getMsgType())
00116 {
00117 rtn = true;
00118 }
00119 else
00120 {
00121 LOG_WARN("Message type: %d, doesn't match handler type: %d",
00122 in.getMessageType(), this->getMsgType());
00123 rtn = false;
00124 }
00125 }
00126 else
00127 {
00128 LOG_WARN("Passed in message invalid");
00129 }
00130
00131 return rtn;
00132
00133 }
00134
00135 }
00136 }