Added a client transfer context for use by the control marshaling function

This commit is contained in:
Martin 2023-09-03 09:26:36 -04:00
parent de09ddbe09
commit fae30398b2
2 changed files with 10 additions and 3 deletions

View File

@ -307,7 +307,7 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
JsonObject item = items.createNestedObject();
elementcount++;
control->MarshalControl(item, InUpdateMode);
control->MarshalControl(item, InUpdateMode, ClientTransferContext);
if (rootDoc.overflowed())
{
@ -315,6 +315,7 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
if (1 == elementcount)
{
Serial.println(String(F("ERROR: prepareJSONChunk: Control ")) + String(control->id) + F(" is too large to be sent to the browser."));
// Serial.println(String(F("ERROR: prepareJSONChunk: value: ")) + control->value);
rootDoc.clear();
item = items.createNestedObject();
control->MarshalErrorMessage(item);
@ -330,7 +331,6 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
}
// exit the loop
control = nullptr;
}
else
{

View File

@ -17,6 +17,12 @@ public:
ReloadNeeded = 3,
};
struct ClientTransferContext_t
{
void *control = nullptr;
uint16_t Offset = 0;
};
protected:
// bool HasBeenNotified = false; // Set when a notification has been sent and we are waiting for a reply
// bool DelayedNotification = false; // set if a delayed notification is needed
@ -39,7 +45,8 @@ protected:
fsm_EspuiClient_state* pCurrentFsmState = &fsm_EspuiClient_state_Idle_imp;
time_t EspuiClientEndTime = 0;
ClientTransferContext_t ClientTransferContext;
// bool NeedsNotification() { return pCurrentFsmState != &fsm_EspuiClient_state_Idle_imp; }
bool CanSend();