Skip to content

Commit f2bc8ba

Browse files
Merge send and sendDelayed. Fix #262
1 parent 0e17e6f commit f2bc8ba

File tree

9 files changed

+22
-67
lines changed

9 files changed

+22
-67
lines changed

sdk-api-gen/src/main/resources/templates/Client.hbs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,38 +49,28 @@ public class {{generatedClassSimpleName}} {
4949
}{{/handlers}}
5050

5151
public Send send() {
52-
return new Send();
52+
return new Send(null);
5353
}
5454

55-
public SendDelayed sendDelayed(Duration delay) {
56-
return new SendDelayed(delay);
55+
public Send send(Duration delay) {
56+
return new Send(delay);
5757
}
5858

5959
public class Send {
60-
{{#handlers}}
61-
public void {{name}}({{^inputEmpty}}{{{inputFqcn}}} req{{/inputEmpty}}) {
62-
ContextClient.this.ctx.send(
63-
{{#if isObject}}Target.virtualObject(COMPONENT_NAME, ContextClient.this.key, "{{name}}"){{else}}Target.service(COMPONENT_NAME, "{{name}}"){{/if}},
64-
{{inputSerdeFieldName}},
65-
{{#if inputEmpty}}null{{else}}req{{/if}});
66-
}{{/handlers}}
67-
}
68-
69-
public class SendDelayed {
7060

7161
private final Duration delay;
7262

73-
SendDelayed(Duration delay) {
63+
Send(Duration delay) {
7464
this.delay = delay;
7565
}
7666

7767
{{#handlers}}
7868
public void {{name}}({{^inputEmpty}}{{{inputFqcn}}} req{{/inputEmpty}}) {
79-
ContextClient.this.ctx.sendDelayed(
69+
ContextClient.this.ctx.send(
8070
{{#if isObject}}Target.virtualObject(COMPONENT_NAME, ContextClient.this.key, "{{name}}"){{else}}Target.service(COMPONENT_NAME, "{{name}}"){{/if}},
8171
{{inputSerdeFieldName}},
8272
{{#if inputEmpty}}null{{else}}req{{/if}},
83-
this.delay);
73+
delay);
8474
}{{/handlers}}
8575
}
8676
}

sdk-api-kotlin-gen/src/main/resources/templates/Client.hbs

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,33 +39,18 @@ object {{generatedClassSimpleName}} {
3939
{{#if inputEmpty}}Unit{{else}}req{{/if}})
4040
}{{/handlers}}
4141

42-
fun send(): Send {
43-
return Send()
44-
}
45-
46-
fun sendDelayed(delay: Duration): SendDelayed {
47-
return SendDelayed(delay)
42+
fun send(delay: Duration = Duration.ZERO): Send {
43+
return Send(delay)
4844
}
4945

50-
inner class Send {
46+
inner class Send(private val delay: Duration) {
5147
{{#handlers}}
5248
suspend fun {{name}}({{^inputEmpty}}req: {{{inputFqcn}}}{{/inputEmpty}}) {
5349
this@ContextClient.ctx.send(
54-
{{#if isObject}}Target.virtualObject(COMPONENT_NAME, this@ContextClient.key, "{{name}}"){{else}}Target.service(COMPONENT_NAME, "{{name}}"){{/if}},
55-
{{inputSerdeFieldName}},
56-
{{#if inputEmpty}}Unit{{else}}req{{/if}});
57-
}{{/handlers}}
58-
}
59-
60-
inner class SendDelayed(private val delay: Duration) {
61-
62-
{{#handlers}}
63-
suspend fun {{name}}({{^inputEmpty}}req: {{{inputFqcn}}}{{/inputEmpty}}) {
64-
this@ContextClient.ctx.sendDelayed(
6550
{{#if isObject}}Target.virtualObject(COMPONENT_NAME, this@ContextClient.key, "{{name}}"){{else}}Target.service(COMPONENT_NAME, "{{name}}"){{/if}},
6651
{{inputSerdeFieldName}},
6752
{{#if inputEmpty}}Unit{{else}}req{{/if}},
68-
this.delay);
53+
delay);
6954
}{{/handlers}}
7055
}
7156
}

sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/ContextImpl.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,7 @@ internal class ContextImpl internal constructor(private val syscalls: Syscalls)
117117
return SingleSerdeAwaitableImpl(syscalls, deferred, outputSerde)
118118
}
119119

120-
override suspend fun <T : Any> send(target: Target, inputSerde: Serde<T>, parameter: T) {
121-
val input = inputSerde.serializeWrappingException(syscalls, parameter)
122-
123-
return suspendCancellableCoroutine { cont: CancellableContinuation<Unit> ->
124-
syscalls.send(target, input, null, completingUnitContinuation(cont))
125-
}
126-
}
127-
128-
override suspend fun <T : Any> sendDelayed(
120+
override suspend fun <T : Any> send(
129121
target: Target,
130122
inputSerde: Serde<T>,
131123
parameter: T,

sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/api.kt

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -91,25 +91,13 @@ sealed interface Context {
9191
* @param target the address of the callee
9292
* @param inputSerde Input serde
9393
* @param parameter the invocation request parameter.
94-
*/
95-
suspend fun <T : Any> send(target: Target, inputSerde: Serde<T>, parameter: T)
96-
97-
/**
98-
* Invoke another Restate service without waiting for the response after the provided `delay` has
99-
* elapsed.
100-
*
101-
* This method returns immediately, as the timer is executed and awaited on Restate.
102-
*
103-
* @param target the address of the callee
104-
* @param inputSerde Input serde
105-
* @param parameter the invocation request parameter.
10694
* @param delay time to wait before executing the call
10795
*/
108-
suspend fun <T : Any> sendDelayed(
96+
suspend fun <T : Any> send(
10997
target: Target,
11098
inputSerde: Serde<T>,
11199
parameter: T,
112-
delay: Duration
100+
delay: Duration = Duration.ZERO
113101
)
114102

115103
/**

sdk-api/src/main/java/dev/restate/sdk/Context.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@ default void send(Target target, byte[] parameter) {
7070
* @param parameter the invocation request parameter.
7171
* @param delay time to wait before executing the call.
7272
*/
73-
<T> void sendDelayed(Target target, Serde<T> inputSerde, T parameter, Duration delay);
73+
<T> void send(Target target, Serde<T> inputSerde, T parameter, Duration delay);
7474

75-
/** Like {@link #sendDelayed(Target, Serde, Object, Duration)} with raw input. */
76-
default void sendDelayed(Target target, byte[] parameter, Duration delay) {
77-
sendDelayed(target, CoreSerdes.RAW, parameter, delay);
75+
/** Like {@link #send(Target, Serde, Object, Duration)} with raw input. */
76+
default void send(Target target, byte[] parameter, Duration delay) {
77+
send(target, CoreSerdes.RAW, parameter, delay);
7878
}
7979

8080
/**

sdk-api/src/main/java/dev/restate/sdk/ContextImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public <T> void send(Target target, Serde<T> inputSerde, T parameter) {
104104
}
105105

106106
@Override
107-
public <T> void sendDelayed(Target target, Serde<T> inputSerde, T parameter, Duration delay) {
107+
public <T> void send(Target target, Serde<T> inputSerde, T parameter, Duration delay) {
108108
ByteString input = Util.serializeWrappingException(syscalls, inputSerde, parameter);
109109
Util.<Void>blockOnSyscall(cb -> syscalls.send(target, input, delay, cb));
110110
}

sdk-core/src/main/java/dev/restate/sdk/core/SyscallsImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ public void send(
208208
if (target.getKey() != null) {
209209
builder.setKey(target.getKey());
210210
}
211-
if (delay != null) {
211+
if (delay != null && !delay.isZero()) {
212212
builder.setInvokeTime(Instant.now().toEpochMilli() + delay.toMillis());
213213
}
214214

sdk-workflow-api/src/main/java/dev/restate/sdk/workflow/impl/WorkflowCodegenUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public static void invokeSharedSendDelayed(
113113
String workflowKey,
114114
@Nullable Object payload,
115115
Duration delay) {
116-
ctx.sendDelayed(
116+
ctx.send(
117117
Target.service(workflowName, handlerName),
118118
WorkflowImpl.INVOKE_REQUEST_SERDE,
119119
InvokeRequest.fromAny(workflowKey, payload),

sdk-workflow-api/src/main/java/dev/restate/sdk/workflow/impl/WorkflowContextImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,8 @@ public <T> void send(Target target, Serde<T> inputSerde, T parameter) {
204204
}
205205

206206
@Override
207-
public <T> void sendDelayed(Target target, Serde<T> inputSerde, T parameter, Duration delay) {
208-
ctx.sendDelayed(target, inputSerde, parameter, delay);
207+
public <T> void send(Target target, Serde<T> inputSerde, T parameter, Duration delay) {
208+
ctx.send(target, inputSerde, parameter, delay);
209209
}
210210

211211
@Override

0 commit comments

Comments
 (0)