Skip to content

Commit

Permalink
Make Timestamp and TimeDuration special types (#233)
Browse files Browse the repository at this point in the history
## Description of Changes

C# part of clockworklabs/SpacetimeDB#1836
Needs to be rebased onto
#220
once that is merged.

## API

 - [x] This is an API breaking change to the SDK

ScheduleAt is now constructed in slightly different ways.

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: phoebe/timestamp-special-type

## Testing
Will need an update to blackholio as well.
  • Loading branch information
kazimuth authored Feb 7, 2025
1 parent 7680a73 commit 1b445a5
Show file tree
Hide file tree
Showing 24 changed files with 86 additions and 119 deletions.
3 changes: 3 additions & 0 deletions SpacetimeDB.ClientSDK.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
<DefaultItemExcludes>$(DefaultItemExcludes);*~/**</DefaultItemExcludes>
<!-- We want to save DLLs for Unity which doesn't support NuGet. -->
<RestorePackagesPath>packages</RestorePackagesPath>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
</PropertyGroup>

<ItemGroup>
Expand All @@ -29,6 +30,8 @@
<InternalsVisibleTo Include="SpacetimeDB.Tests" />
</ItemGroup>



<ItemGroup>
<None Update="logo.png" Pack="true" PackagePath="" />
<None Update="README.md" Pack="true" PackagePath="" />
Expand Down
3 changes: 2 additions & 1 deletion examples~/quickstart/client/client.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<CheckEolTargetFramework>false</CheckEolTargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ public sealed partial class Message
[DataMember(Name = "sender")]
public SpacetimeDB.Identity Sender;
[DataMember(Name = "sent")]
public ulong Sent;
public SpacetimeDB.Timestamp Sent;
[DataMember(Name = "text")]
public string Text;

public Message(
SpacetimeDB.Identity Sender,
ulong Sent,
SpacetimeDB.Timestamp Sent,
string Text
)
{
Expand Down
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion src/Event.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Unit OutOfEnergy
)>;

public record ReducerEvent<R>(
DateTimeOffset Timestamp,
Timestamp Timestamp,
Status Status,
Identity CallerIdentity,
Address? CallerAddress,
Expand Down
8 changes: 4 additions & 4 deletions src/SpacetimeDB/ClientApi/InitialSubscription.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@ public sealed partial class InitialSubscription
public DatabaseUpdate DatabaseUpdate;
[DataMember(Name = "request_id")]
public uint RequestId;
[DataMember(Name = "total_host_execution_duration_micros")]
public ulong TotalHostExecutionDurationMicros;
[DataMember(Name = "total_host_execution_duration")]
public SpacetimeDB.TimeDuration TotalHostExecutionDuration;

public InitialSubscription(
DatabaseUpdate DatabaseUpdate,
uint RequestId,
ulong TotalHostExecutionDurationMicros
SpacetimeDB.TimeDuration TotalHostExecutionDuration
)
{
this.DatabaseUpdate = DatabaseUpdate;
this.RequestId = RequestId;
this.TotalHostExecutionDurationMicros = TotalHostExecutionDurationMicros;
this.TotalHostExecutionDuration = TotalHostExecutionDuration;
}

public InitialSubscription()
Expand Down
8 changes: 4 additions & 4 deletions src/SpacetimeDB/ClientApi/OneOffQueryResponse.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,20 @@ public sealed partial class OneOffQueryResponse
public string? Error;
[DataMember(Name = "tables")]
public System.Collections.Generic.List<OneOffTable> Tables;
[DataMember(Name = "total_host_execution_duration_micros")]
public ulong TotalHostExecutionDurationMicros;
[DataMember(Name = "total_host_execution_duration")]
public SpacetimeDB.TimeDuration TotalHostExecutionDuration;

public OneOffQueryResponse(
System.Collections.Generic.List<byte> MessageId,
string? Error,
System.Collections.Generic.List<OneOffTable> Tables,
ulong TotalHostExecutionDurationMicros
SpacetimeDB.TimeDuration TotalHostExecutionDuration
)
{
this.MessageId = MessageId;
this.Error = Error;
this.Tables = Tables;
this.TotalHostExecutionDurationMicros = TotalHostExecutionDurationMicros;
this.TotalHostExecutionDuration = TotalHostExecutionDuration;
}

public OneOffQueryResponse()
Expand Down
6 changes: 3 additions & 3 deletions src/SpacetimeDB/ClientApi/QueryId.g.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/SpacetimeDB/ClientApi/SubscribeApplied.g.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/SpacetimeDB/ClientApi/SubscribeRows.g.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/SpacetimeDB/ClientApi/SubscribeSingle.g.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/SpacetimeDB/ClientApi/SubscriptionError.g.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 0 additions & 28 deletions src/SpacetimeDB/ClientApi/Timestamp.g.cs

This file was deleted.

11 changes: 0 additions & 11 deletions src/SpacetimeDB/ClientApi/Timestamp.g.cs.meta

This file was deleted.

13 changes: 6 additions & 7 deletions src/SpacetimeDB/ClientApi/TransactionUpdate.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public sealed partial class TransactionUpdate
[DataMember(Name = "status")]
public UpdateStatus Status;
[DataMember(Name = "timestamp")]
public Timestamp Timestamp;
public SpacetimeDB.Timestamp Timestamp;
[DataMember(Name = "caller_identity")]
public SpacetimeDB.Identity CallerIdentity;
[DataMember(Name = "caller_address")]
Expand All @@ -25,17 +25,17 @@ public sealed partial class TransactionUpdate
public ReducerCallInfo ReducerCall;
[DataMember(Name = "energy_quanta_used")]
public EnergyQuanta EnergyQuantaUsed;
[DataMember(Name = "host_execution_duration_micros")]
public ulong HostExecutionDurationMicros;
[DataMember(Name = "total_host_execution_duration")]
public SpacetimeDB.TimeDuration TotalHostExecutionDuration;

public TransactionUpdate(
UpdateStatus Status,
Timestamp Timestamp,
SpacetimeDB.Timestamp Timestamp,
SpacetimeDB.Identity CallerIdentity,
SpacetimeDB.Address CallerAddress,
ReducerCallInfo ReducerCall,
EnergyQuanta EnergyQuantaUsed,
ulong HostExecutionDurationMicros
SpacetimeDB.TimeDuration TotalHostExecutionDuration
)
{
this.Status = Status;
Expand All @@ -44,13 +44,12 @@ ulong HostExecutionDurationMicros
this.CallerAddress = CallerAddress;
this.ReducerCall = ReducerCall;
this.EnergyQuantaUsed = EnergyQuantaUsed;
this.HostExecutionDurationMicros = HostExecutionDurationMicros;
this.TotalHostExecutionDuration = TotalHostExecutionDuration;
}

public TransactionUpdate()
{
this.Status = null!;
this.Timestamp = new();
this.ReducerCall = new();
this.EnergyQuantaUsed = new();
}
Expand Down
6 changes: 3 additions & 3 deletions src/SpacetimeDB/ClientApi/Unsubscribe.g.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/SpacetimeDB/ClientApi/UnsubscribeApplied.g.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/SpacetimeDBClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ PreProcessedMessage PreProcessMessage(UnprocessedMessage unprocessed)
try
{
reducerEvent = new(
DateTimeOffset.FromUnixTimeMilliseconds((long)transactionUpdate.Timestamp.Microseconds / 1000),
(DateTimeOffset)transactionUpdate.Timestamp,
transactionUpdate.Status switch
{
UpdateStatus.Committed => Committed,
Expand Down Expand Up @@ -908,7 +908,7 @@ private void OnMessageProcessComplete(PreProcessedMessage preProcessed)
{
var reducer = transactionUpdate.ReducerCall.ReducerName;
stats.ParseMessageTracker.InsertRequest(timestamp, $"type={nameof(ServerMessage.TransactionUpdate)},reducer={reducer}");
var hostDuration = TimeSpan.FromMilliseconds(transactionUpdate.HostExecutionDurationMicros / 1000.0d);
var hostDuration = (TimeSpan)transactionUpdate.TotalHostExecutionDuration;
stats.AllReducersTracker.InsertRequest(hostDuration, $"reducer={reducer}");
var callerIdentity = transactionUpdate.CallerIdentity;
if (callerIdentity == Identity)
Expand Down
Loading

0 comments on commit 1b445a5

Please sign in to comment.