stephb9959
2022-09-20 11:04:01 -07:00
parent 8fc342770b
commit 15776c01ac
3 changed files with 14 additions and 6 deletions

View File

@@ -149,12 +149,15 @@ namespace OpenWifi {
OutStandingRequests_.erase(Id); OutStandingRequests_.erase(Id);
} }
inline bool CommandRunningForDevice(std::uint64_t SerialNumber) { inline bool CommandRunningForDevice(std::uint64_t SerialNumber, std::string & uuid, std::string &command) {
std::lock_guard G(Mutex_); std::lock_guard G(Mutex_);
for(auto Request = OutStandingRequests_.begin(); Request != OutStandingRequests_.end() ; ) { for(auto Request = OutStandingRequests_.begin(); Request != OutStandingRequests_.end() ; ) {
if(Request->second.SerialNumber==SerialNumber) if(Request->second.SerialNumber==SerialNumber) {
uuid = Request->second.UUID;
command = Request->second.Command;
return true; return true;
}
} }
return false; return false;
} }

View File

@@ -149,9 +149,10 @@ namespace OpenWifi {
CallCanceled(Command.Command, RESTAPI::Errors::DeviceNotConnected); CallCanceled(Command.Command, RESTAPI::Errors::DeviceNotConnected);
return BadRequest(RESTAPI::Errors::DeviceNotConnected); return BadRequest(RESTAPI::Errors::DeviceNotConnected);
} }
if(!Command.AllowParallel && CommandManager()->CommandRunningForDevice(SerialNumberInt_)) { std::string Command_UUID, CommandName;
if(!Command.AllowParallel && CommandManager()->CommandRunningForDevice(SerialNumberInt_,Command_UUID,CommandName)) {
CallCanceled(Command.Command, RESTAPI::Errors::DeviceIsAlreadyBusy); CallCanceled(Command.Command, RESTAPI::Errors::DeviceIsAlreadyBusy);
return BadRequest(RESTAPI::Errors::DeviceIsAlreadyBusy); return BadRequest(RESTAPI::Errors::DeviceIsAlreadyBusy, fmt::format("UUID={} Command={}", Command_UUID, CommandName));
} }
auto UUID = MicroService::CreateUUID(); auto UUID = MicroService::CreateUUID();
auto RPC = CommandManager()->NextRPCId(); auto RPC = CommandManager()->NextRPCId();

View File

@@ -2178,12 +2178,16 @@ namespace OpenWifi {
SetCommonHeaders(CloseConnection); SetCommonHeaders(CloseConnection);
} }
inline void BadRequest(const OpenWifi::RESTAPI::Errors::msg &E) { inline void BadRequest(const OpenWifi::RESTAPI::Errors::msg &E, const std::string & Extra="") {
PrepareResponse(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); PrepareResponse(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST);
Poco::JSON::Object ErrorObject; Poco::JSON::Object ErrorObject;
ErrorObject.set("ErrorCode",400); ErrorObject.set("ErrorCode",400);
ErrorObject.set("ErrorDetails",Request->getMethod()); ErrorObject.set("ErrorDetails",Request->getMethod());
ErrorObject.set("ErrorDescription",fmt::format("{}: {}",E.err_num,E.err_txt)) ; if(Extra.empty())
ErrorObject.set("ErrorDescription",fmt::format("{}: {}",E.err_num,E.err_txt)) ;
else
ErrorObject.set("ErrorDescription",fmt::format("{}: {} ({})",E.err_num,E.err_txt, Extra)) ;
std::ostream &Answer = Response->send(); std::ostream &Answer = Response->send();
Poco::JSON::Stringifier::stringify(ErrorObject, Answer); Poco::JSON::Stringifier::stringify(ErrorObject, Answer);
} }