Skip to content

Commit

Permalink
BDX: update reset and endLogCollection to distinguish success and fai…
Browse files Browse the repository at this point in the history
…lure cases
  • Loading branch information
pimpalemahesh authored and esp committed Dec 10, 2024
1 parent 5d42d92 commit 5f8b982
Show file tree
Hide file tree
Showing 9 changed files with 20 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ CHIP_ERROR LogProvider::GetLogForIntent(IntentEnum intent, MutableByteSpan & out
err = CollectLog(sessionHandle, outBuffer, unusedOutIsEndOfLog);
VerifyOrReturnError(CHIP_NO_ERROR == err, err, outBuffer.reduce_size(0));

err = EndLogCollection(sessionHandle);
err = EndLogCollection(sessionHandle, CHIP_NO_ERROR);
VerifyOrReturnError(CHIP_NO_ERROR == err, err, outBuffer.reduce_size(0));

return CHIP_NO_ERROR;
Expand All @@ -106,7 +106,7 @@ CHIP_ERROR LogProvider::StartLogCollection(IntentEnum intent, LogSessionHandle &
return CHIP_NO_ERROR;
}

CHIP_ERROR LogProvider::EndLogCollection(LogSessionHandle sessionHandle)
CHIP_ERROR LogProvider::EndLogCollection(LogSessionHandle sessionHandle, CHIP_ERROR error)
{
VerifyOrReturnValue(sessionHandle != kInvalidLogSessionHandle, CHIP_ERROR_INVALID_ARGUMENT);
VerifyOrReturnValue(mFiles.count(sessionHandle), CHIP_ERROR_INVALID_ARGUMENT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class LogProvider : public DiagnosticLogsProviderDelegate
/////////// DiagnosticLogsProviderDelegate Interface /////////
CHIP_ERROR StartLogCollection(IntentEnum intent, LogSessionHandle & outHandle, Optional<uint64_t> & outTimeStamp,
Optional<uint64_t> & outTimeSinceBoot) override;
CHIP_ERROR EndLogCollection(LogSessionHandle sessionHandle) override;
CHIP_ERROR EndLogCollection(LogSessionHandle sessionHandle, CHIP_ERROR error) override;
CHIP_ERROR CollectLog(LogSessionHandle sessionHandle, MutableByteSpan & outBuffer, bool & outIsEndOfLog) override;
size_t GetSizeForIntent(IntentEnum intent) override;
CHIP_ERROR GetLogForIntent(IntentEnum intent, MutableByteSpan & outBuffer, Optional<uint64_t> & outTimeStamp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class LogProvider : public DiagnosticLogsProviderDelegate
/////////// DiagnosticLogsProviderDelegate Interface /////////
CHIP_ERROR StartLogCollection(IntentEnum intent, LogSessionHandle & outHandle, Optional<uint64_t> & outTimeStamp,
Optional<uint64_t> & outTimeSinceBoot) override;
CHIP_ERROR EndLogCollection(LogSessionHandle sessionHandle) override;
CHIP_ERROR EndLogCollection(LogSessionHandle sessionHandle, CHIP_ERROR error) override;
CHIP_ERROR CollectLog(LogSessionHandle sessionHandle, MutableByteSpan & outBuffer, bool & outIsEndOfLog) override;
size_t GetSizeForIntent(IntentEnum intent) override;
CHIP_ERROR GetLogForIntent(IntentEnum intent, MutableByteSpan & outBuffer, Optional<uint64_t> & outTimeStamp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ CHIP_ERROR LogProvider::GetLogForIntent(IntentEnum intent, MutableByteSpan & out
err = CollectLog(sessionHandle, outBuffer, unusedOutIsEndOfLog);
VerifyOrReturnError(CHIP_NO_ERROR == err, err, outBuffer.reduce_size(0));

err = EndLogCollection(sessionHandle);
err = EndLogCollection(sessionHandle, CHIP_NO_ERROR);
VerifyOrReturnError(CHIP_NO_ERROR == err, err, outBuffer.reduce_size(0));

return CHIP_NO_ERROR;
Expand Down Expand Up @@ -89,7 +89,7 @@ CHIP_ERROR LogProvider::StartLogCollection(IntentEnum intent, LogSessionHandle &
return CHIP_NO_ERROR;
}

CHIP_ERROR LogProvider::EndLogCollection(LogSessionHandle sessionHandle)
CHIP_ERROR LogProvider::EndLogCollection(LogSessionHandle sessionHandle, CHIP_ERROR error)
{
VerifyOrReturnValue(sessionHandle != kInvalidLogSessionHandle, CHIP_ERROR_INVALID_ARGUMENT);
VerifyOrReturnValue(mSessionSpanMap.count(sessionHandle), CHIP_ERROR_INVALID_ARGUMENT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ CHIP_ERROR LogProvider::GetLogForIntent(IntentEnum intent, MutableByteSpan & out
err = CollectLog(sessionHandle, outBuffer, unusedOutIsEndOfLog);
VerifyOrReturnError(CHIP_NO_ERROR == err, err, outBuffer.reduce_size(0));

err = EndLogCollection(sessionHandle);
err = EndLogCollection(sessionHandle, CHIP_NO_ERROR);
VerifyOrReturnError(CHIP_NO_ERROR == err, err, outBuffer.reduce_size(0));

return CHIP_NO_ERROR;
Expand Down Expand Up @@ -276,7 +276,7 @@ CHIP_ERROR LogProvider::StartLogCollection(IntentEnum intent, LogSessionHandle &
return CHIP_NO_ERROR;
}

CHIP_ERROR LogProvider::EndLogCollection(LogSessionHandle sessionHandle)
CHIP_ERROR LogProvider::EndLogCollection(LogSessionHandle sessionHandle, CHIP_ERROR error)
{
VerifyOrReturnValue(sessionHandle != kInvalidLogSessionHandle, CHIP_ERROR_INVALID_ARGUMENT);
VerifyOrReturnValue(mSessionContextMap.count(sessionHandle), CHIP_ERROR_INVALID_ARGUMENT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class LogProvider : public DiagnosticLogsProviderDelegate
/////////// DiagnosticLogsProviderDelegate Interface /////////
CHIP_ERROR StartLogCollection(IntentEnum intent, LogSessionHandle & outHandle, Optional<uint64_t> & outTimeStamp,
Optional<uint64_t> & outTimeSinceBoot) override;
CHIP_ERROR EndLogCollection(LogSessionHandle sessionHandle) override;
CHIP_ERROR EndLogCollection(LogSessionHandle sessionHandle, CHIP_ERROR error) override;
CHIP_ERROR CollectLog(LogSessionHandle sessionHandle, MutableByteSpan & outBuffer, bool & outIsEndOfLog) override;
size_t GetSizeForIntent(IntentEnum intent) override;
CHIP_ERROR GetLogForIntent(IntentEnum intent, MutableByteSpan & outBuffer, Optional<uint64_t> & outTimeStamp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ void BDXDiagnosticLogsProvider::OnMsgToSend(TransferSession::OutputEvent & event
auto err =
mBDXTransferExchangeCtx->SendMessage(msgTypeData.ProtocolId, msgTypeData.MessageType, std::move(event.MsgData), sendFlags);

VerifyOrDo(CHIP_NO_ERROR == err, Reset());
VerifyOrDo(CHIP_NO_ERROR == err, Reset(err));
}

void BDXDiagnosticLogsProvider::OnAcceptReceived()
Expand Down Expand Up @@ -191,7 +191,7 @@ void BDXDiagnosticLogsProvider::OnAckReceived()
// If the buffer has empty space, end the log collection session.
if (isEndOfLog)
{
mDelegate->EndLogCollection(mLogSessionHandle);
mDelegate->EndLogCollection(mLogSessionHandle, CHIP_NO_ERROR);
mLogSessionHandle = kInvalidLogSessionHandle;
}

Expand All @@ -213,7 +213,7 @@ void BDXDiagnosticLogsProvider::OnAckEOFReceived()
{
ChipLogProgress(BDX, "Diagnostic logs transfer: Success");

Reset();
Reset(CHIP_NO_ERROR);
}

void BDXDiagnosticLogsProvider::OnStatusReceived(TransferSession::OutputEvent & event)
Expand All @@ -223,21 +223,21 @@ void BDXDiagnosticLogsProvider::OnStatusReceived(TransferSession::OutputEvent &
// If a failure StatusReport is received in response to the SendInit message, the Node SHALL send a RetrieveLogsResponse command
// with a Status of Denied.
VerifyOrDo(mIsAcceptReceived, SendCommandResponse(StatusEnum::kDenied));
Reset();
Reset(CHIP_ERROR_INCORRECT_STATE);
}

void BDXDiagnosticLogsProvider::OnInternalError()
{
ChipLogError(BDX, "Internal Error");
VerifyOrDo(mIsAcceptReceived, SendCommandResponse(StatusEnum::kDenied));
Reset();
Reset(CHIP_ERROR_INTERNAL);
}

void BDXDiagnosticLogsProvider::OnTimeout()
{
ChipLogError(BDX, "Timeout");
VerifyOrDo(mIsAcceptReceived, SendCommandResponse(StatusEnum::kDenied));
Reset();
Reset(CHIP_ERROR_TIMEOUT);
}

void BDXDiagnosticLogsProvider::SendCommandResponse(StatusEnum status)
Expand All @@ -264,7 +264,7 @@ void BDXDiagnosticLogsProvider::SendCommandResponse(StatusEnum status)
commandHandle->AddResponse(mRequestPath, response);
}

void BDXDiagnosticLogsProvider::Reset()
void BDXDiagnosticLogsProvider::Reset(CHIP_ERROR error)
{
assertChipStackLockedByCurrentThread();

Expand All @@ -279,7 +279,7 @@ void BDXDiagnosticLogsProvider::Reset()

if (mDelegate != nullptr)
{
mDelegate->EndLogCollection(mLogSessionHandle);
mDelegate->EndLogCollection(mLogSessionHandle, error);
mDelegate = nullptr;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class BDXDiagnosticLogsProvider : public bdx::Initiator
* This method is called to reset state. It resets the transfer, cleans up the
* exchange and ends log collection.
*/
void Reset();
void Reset(CHIP_ERROR error);

Messaging::ExchangeContext * mBDXTransferExchangeCtx;
DiagnosticLogsProviderDelegate * mDelegate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,10 @@ class DiagnosticLogsProviderDelegate
* returned from StartLogCollection.
*
* @param[in] sessionHandle The unique handle for this log session returned from a call to StartLogCollection.
* @param[in] error A CHIP_ERROR value that indicates the reason for ending the log collection.
*
*/
virtual CHIP_ERROR EndLogCollection(LogSessionHandle sessionHandle) = 0;
virtual CHIP_ERROR EndLogCollection(LogSessionHandle sessionHandle, CHIP_ERROR error) = 0;

/**
* Called to get the next chunk for the log session identified by sessionHandle.
Expand Down

0 comments on commit 5f8b982

Please sign in to comment.