void FeedSocketDriver::ExecuteCommand( Command command ) { string logMessage = "FeedsSocket Driver - Execute Command " + command.Name(); EventLogger::Instance()->WriteInformation( logMessage.c_str() ); if ( !strcmp( command.Name().c_str(), INIT_CMD ) ) { CommandParameter* ipParam = command.GetParameter( SOCKETDriver_IP ); this->ip = *(string*)(ipParam->Value); CommandParameter* portParam = command.GetParameter( SOCKETDriver_PORT ); this->port = *(int*)(portParam->Value); FeedsSocketClient::Instance()->Initialize(this->ip, this->port); string initMessage = "{\"command\":\"Init\", \"userId\"=\"1\"}"; FeedsSocketClient::Instance()->SendMessage(initMessage); } else if( !strcmp( command.Name().c_str(), STOP_CMD ) ) { FeedsSocketClient::Instance()->Close(); } else if( !strcmp( command.Name().c_str(), SETVAL_CMD) ) { CommandParameter* ipParam = command.GetParameter( VALUE_KEY ); string msg = *(string*)(ipParam->Value); string sendmsg = "{\"command\":\"PostData\", \"userId\":\"1\", \"feedId\":\"1\", \"date\":\"Today\", \"value\":\"" + msg + "\"}"; FeedsSocketClient::Instance()->SendMessage( sendmsg ); } }
void FileTransfer::Run() { std::cout << "File Transfer service started" << std::endl; while (true) { Command *cmd = DeQ(); if (cmd == 0) // termination signal break; if (cmd->Name() == "PutFile") { PutFile * pf = dynamic_cast<PutFile*>(cmd); std::string newpath = _saveDir + "\\" + pf->_fname; (void) DeleteFile(newpath.c_str()); // delete target file just in case bool status = MoveFile(pf->_path.c_str(), newpath.c_str()) ? true : false; StatusMessage * resp = new StatusMessage(status); resp->SetConn(cmd->Msg().Conn()); Dispatch(resp); } else { std::cout << "Command " << cmd->Name() << " is not known" << std::endl; } delete cmd; } std::cout << "File Transfer service stopped" << std::endl; }
bool IObjectMapPropertyType<KeyType, ValueType>::DoDeserialize( BidirectionalSerializer &bidi, KeyType &key, ValueType &value) { IDeserializer *deserializer = bidi.Deserializer(); Command item; if(deserializer->BeginCommand(item)) { OrkAssert(item.Type() == Command::EITEM); if(item.Type() != Command::EITEM) { deserializer->EndCommand(item); bidi.Fail(); return false; } Command attribute; deserializer->BeginCommand(attribute); OrkAssert(attribute.Type() == Command::EATTRIBUTE); OrkAssert(attribute.Name() == "key"); if(attribute.Type() != Command::EATTRIBUTE || attribute.Name() != "key") { deserializer->EndCommand(attribute); bidi.Fail(); return false; } deserializer->Hint("map_key"); bidi | key; deserializer->EndCommand(attribute); deserializer->Hint("map_value"); bidi | value; deserializer->EndCommand(item); return true; } return false; }
void ADCDevice::ExecuteCommand( Command command ) { string logMessage = "ADC Device - Executing Command " + (string) command.Name(); EventLogger::Instance()->WriteInformation( logMessage.c_str() ); list<Pinout*>::iterator i; for ( i = this->pinouts->begin(); i != this->pinouts->end(); i++ ) { ( *i )->ExecuteCommand( command ); } }
void TextSearch::Run() { std::cout << "Text Search service started" << std::endl; while (true) { Command *cmd = DeQ(); if (cmd == 0) // termination signal break; if (cmd->Name() == "SearchString") { SearchString * ss = dynamic_cast<SearchString*>(cmd); ss->_svc = this; std::vector<std::string> files = FileSystem::Directory::getFiles(FileTransfer::SaveDir(), "*.*"); for (auto& file : files) ss->_files.enQ(new std::string(FileTransfer::SaveDir() + "\\" + file)); for (int i = 0; i < ss->_jobs; i++) { std::thread(TextSearch::SearchThread, ss).detach(); // we do not need the thread object ss->_files.enQ(0); // thread termination } continue; // so that we do not delete the command object here } else { std::cout << "Command " << cmd->Name() << " is not known" << std::endl; } delete cmd; } std::cout << "File Transfer service stopped" << std::endl; }
void UltraHeatDriver::ExecuteCommand( Command command ) { string logMessage = "UltraHeatDriver - Execute Command " + command.Name(); EventLogger::Instance()->WriteInformation( logMessage.c_str() ); if ( !strcmp( command.Name().c_str(), INIT_CMD ) ) { CommandParameter* comNumberParam = command.GetParameter( COMPORT_NUM ); this->comPortNumber = *(int*) ( comNumberParam->Value ); char temp[50]; sprintf( temp, "%s%d", SERIAL_PORT, this->comPortNumber ); this->comPortName = temp; this->comPortFD = this->Open_port(); this->StartReadDataThread(); EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - Opening serial port - %s", this->comPortName.c_str() ); } else if ( !strcmp( command.Name().c_str(), SETVAL_CMD ) ) { string data = "Exeuting SETVAL_CMD\n"; write(this->fdDebug, data.c_str(), data.size() ); CommandParameter* valueParam = command.GetParameter( VALUE_KEY ); int value = *(int*) ( valueParam->Value ); string message; if( value == 1 ) { message = this->CreateMessage( HEAT_ON_CMDNAME, "" ); EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - HEAT ONN - %s", message.c_str() ); } else { message = this->CreateMessage( HEAT_OFF_CMDNAME, "" ); EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - HEAT OFF - %s", message.c_str() ); } this->WriteData( message ); } else if ( !strcmp( command.Name().c_str(), STOP_CMD ) ) { string logMessage = "UltraHeatDriver - Stop succeeded."; if( this->comPortFD == -1) { logMessage = "UltraHeatDriver - the COM hasn't been opened!"; } else { this->Close_port( this->comPortFD ); } EventLogger::Instance()->WriteVerbose( logMessage.c_str() ); this->StopReadDataThread(); } else if( ! strcmp( command.Name().c_str(), SET_PARAM_CMD ) ) { CommandParameter* cmdParamKey = command.GetParameter( SET_PARAM_NAME ); CommandParameter* cmdParamValue = command.GetParameter( SET_PARAM_VAL ); if( cmdParamKey == NULL || cmdParamValue == NULL ) { EventLogger::Instance()->WriteVerbose("The %s command should contain two parameters - %s and %s.", SET_PARAM_CMD, SET_PARAM_NAME, SET_PARAM_VAL); // throw return; } string key = *(string*)cmdParamKey->Value; string value = *(string*)cmdParamValue->Value; string message = this->CreateMessage( key, value ); this->WriteData( message ); EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - %s", message.c_str() ); } else { EventLogger::Instance()->WriteVerbose( "The command '%s' is not supported by the UltraHeatDriver.", command.Name().c_str() ); } }