Skip to content

Commit 5790ba4

Browse files
Small codegen fixes to treat unknown request ids as a protocol violation
1 parent a8170a6 commit 5790ba4

4 files changed

Lines changed: 20 additions & 23 deletions

File tree

crates/codegen/src/unrealcpp.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3514,8 +3514,7 @@ fn generate_client_implementation(
35143514
output,
35153515
" const FString ErrorMessage = FString::Printf(TEXT(\"Reducer result for unknown request_id %u\"), Event.RequestId);"
35163516
);
3517-
writeln!(output, " UE_LOG(LogTemp, Error, TEXT(\"%s\"), *ErrorMessage);");
3518-
writeln!(output, " ReducerEventFailed(Event, ErrorMessage);");
3517+
writeln!(output, " HandleProtocolViolation(ErrorMessage);");
35193518
writeln!(output, " return;");
35203519
writeln!(output, " }}");
35213520
writeln!(output);
@@ -3876,6 +3875,7 @@ fn generate_client_implementation(
38763875
"void U{module_prefix}DbConnection::ForwardOnDisconnect(UDbConnectionBase* BaseConnection, const FString& Error)"
38773876
);
38783877
writeln!(output, "{{");
3878+
writeln!(output, "\tPendingTypedReducers.Empty();");
38793879
writeln!(output, "\tif (OnDisconnectDelegate.IsBound())");
38803880
writeln!(output, "\t{{");
38813881
writeln!(output, "\t\tOnDisconnectDelegate.Execute(this, Error);");
@@ -3911,13 +3911,10 @@ fn generate_client_implementation(
39113911
writeln!(output, " {{");
39123912
writeln!(
39133913
output,
3914-
" UE_LOG(LogTemp, Warning, TEXT(\"Missing typed reducer for request_id %u while building table-update event context; using UnknownTransaction event\"), ReducerEvent.RequestId);"
3914+
" const FString ErrorMessage = FString::Printf(TEXT(\"Reducer result for unknown request_id %u\"), ReducerEvent.RequestId);"
39153915
);
3916-
writeln!(
3917-
output,
3918-
" BaseEvent = F{module_name_pascal}Event::UnknownTransaction(FSpacetimeDBUnit());"
3919-
);
3920-
writeln!(output, " break;");
3916+
writeln!(output, " HandleProtocolViolation(ErrorMessage);");
3917+
writeln!(output, " return;");
39213918
writeln!(output, " }}");
39223919
writeln!(
39233920
output,

sdks/unreal/examples/QuickstartChat/Source/QuickstartChat/Private/ModuleBindings/SpacetimeDBClient.g.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,7 @@ void UDbConnection::ReducerEvent(const FReducerEvent& Event)
226226
if (!TryTakePendingTypedReducer(Event.RequestId, DecodedReducer))
227227
{
228228
const FString ErrorMessage = FString::Printf(TEXT("Reducer result for unknown request_id %u"), Event.RequestId);
229-
UE_LOG(LogTemp, Error, TEXT("%s"), *ErrorMessage);
230-
ReducerEventFailed(Event, ErrorMessage);
229+
HandleProtocolViolation(ErrorMessage);
231230
return;
232231
}
233232

@@ -431,6 +430,7 @@ void UDbConnection::ForwardOnConnect(UDbConnectionBase* BaseConnection, FSpaceti
431430
}
432431
void UDbConnection::ForwardOnDisconnect(UDbConnectionBase* BaseConnection, const FString& Error)
433432
{
433+
PendingTypedReducers.Empty();
434434
if (OnDisconnectDelegate.IsBound())
435435
{
436436
OnDisconnectDelegate.Execute(this, Error);
@@ -451,9 +451,9 @@ void UDbConnection::DbUpdate(const FDatabaseUpdateType& Update, const FSpacetime
451451
FReducer Reducer;
452452
if (!TryGetPendingTypedReducer(ReducerEvent.RequestId, Reducer))
453453
{
454-
UE_LOG(LogTemp, Warning, TEXT("Missing typed reducer for request_id %u while building table-update event context; using UnknownTransaction event"), ReducerEvent.RequestId);
455-
BaseEvent = FQuickstartChatEvent::UnknownTransaction(FSpacetimeDBUnit());
456-
break;
454+
const FString ErrorMessage = FString::Printf(TEXT("Reducer result for unknown request_id %u"), ReducerEvent.RequestId);
455+
HandleProtocolViolation(ErrorMessage);
456+
return;
457457
}
458458
BaseEvent = FQuickstartChatEvent::Reducer(Reducer);
459459
break;

sdks/unreal/tests/TestClient/Source/TestClient/Private/ModuleBindings/SpacetimeDBClient.g.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9662,8 +9662,7 @@ void UDbConnection::ReducerEvent(const FReducerEvent& Event)
96629662
if (!TryTakePendingTypedReducer(Event.RequestId, DecodedReducer))
96639663
{
96649664
const FString ErrorMessage = FString::Printf(TEXT("Reducer result for unknown request_id %u"), Event.RequestId);
9665-
UE_LOG(LogTemp, Error, TEXT("%s"), *ErrorMessage);
9666-
ReducerEventFailed(Event, ErrorMessage);
9665+
HandleProtocolViolation(ErrorMessage);
96679666
return;
96689667
}
96699668

@@ -11037,6 +11036,7 @@ void UDbConnection::ForwardOnConnect(UDbConnectionBase* BaseConnection, FSpaceti
1103711036
}
1103811037
void UDbConnection::ForwardOnDisconnect(UDbConnectionBase* BaseConnection, const FString& Error)
1103911038
{
11039+
PendingTypedReducers.Empty();
1104011040
if (OnDisconnectDelegate.IsBound())
1104111041
{
1104211042
OnDisconnectDelegate.Execute(this, Error);
@@ -11057,9 +11057,9 @@ void UDbConnection::DbUpdate(const FDatabaseUpdateType& Update, const FSpacetime
1105711057
FReducer Reducer;
1105811058
if (!TryGetPendingTypedReducer(ReducerEvent.RequestId, Reducer))
1105911059
{
11060-
UE_LOG(LogTemp, Warning, TEXT("Missing typed reducer for request_id %u while building table-update event context; using UnknownTransaction event"), ReducerEvent.RequestId);
11061-
BaseEvent = FTestClientEvent::UnknownTransaction(FSpacetimeDBUnit());
11062-
break;
11060+
const FString ErrorMessage = FString::Printf(TEXT("Reducer result for unknown request_id %u"), ReducerEvent.RequestId);
11061+
HandleProtocolViolation(ErrorMessage);
11062+
return;
1106311063
}
1106411064
BaseEvent = FTestClientEvent::Reducer(Reducer);
1106511065
break;

sdks/unreal/tests/TestProcClient/Source/TestProcClient/Private/ModuleBindings/SpacetimeDBClient.g.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -474,8 +474,7 @@ void UDbConnection::ReducerEvent(const FReducerEvent& Event)
474474
if (!TryTakePendingTypedReducer(Event.RequestId, DecodedReducer))
475475
{
476476
const FString ErrorMessage = FString::Printf(TEXT("Reducer result for unknown request_id %u"), Event.RequestId);
477-
UE_LOG(LogTemp, Error, TEXT("%s"), *ErrorMessage);
478-
ReducerEventFailed(Event, ErrorMessage);
477+
HandleProtocolViolation(ErrorMessage);
479478
return;
480479
}
481480

@@ -673,6 +672,7 @@ void UDbConnection::ForwardOnConnect(UDbConnectionBase* BaseConnection, FSpaceti
673672
}
674673
void UDbConnection::ForwardOnDisconnect(UDbConnectionBase* BaseConnection, const FString& Error)
675674
{
675+
PendingTypedReducers.Empty();
676676
if (OnDisconnectDelegate.IsBound())
677677
{
678678
OnDisconnectDelegate.Execute(this, Error);
@@ -693,9 +693,9 @@ void UDbConnection::DbUpdate(const FDatabaseUpdateType& Update, const FSpacetime
693693
FReducer Reducer;
694694
if (!TryGetPendingTypedReducer(ReducerEvent.RequestId, Reducer))
695695
{
696-
UE_LOG(LogTemp, Warning, TEXT("Missing typed reducer for request_id %u while building table-update event context; using UnknownTransaction event"), ReducerEvent.RequestId);
697-
BaseEvent = FTestProcClientEvent::UnknownTransaction(FSpacetimeDBUnit());
698-
break;
696+
const FString ErrorMessage = FString::Printf(TEXT("Reducer result for unknown request_id %u"), ReducerEvent.RequestId);
697+
HandleProtocolViolation(ErrorMessage);
698+
return;
699699
}
700700
BaseEvent = FTestProcClientEvent::Reducer(Reducer);
701701
break;

0 commit comments

Comments
 (0)