Action Engine
Loading...
Searching...
No Matches
stream.h
1// Copyright 2025 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef ACTIONENGINE_NET_STREAM_H_
16#define ACTIONENGINE_NET_STREAM_H_
17
18#include <functional>
19#include <optional>
20#include <string>
21
23#include "actionengine/data/serialization.h"
25
26namespace act {
27
28using SendBytesT = std::function<absl::Status(Bytes bytes)>;
29using ReceiveBytesT = std::function<std::optional<Bytes>()>;
30
31} // namespace act
32
33namespace act {
34
45 public:
46 virtual ~WireStream() = default;
47
74 virtual auto Send(WireMessage message) -> absl::Status = 0;
100 virtual auto Receive(absl::Duration timeout)
101 -> absl::StatusOr<std::optional<WireMessage>> = 0;
102
121 virtual auto Accept() -> absl::Status = 0;
141 virtual auto Start() -> absl::Status = 0;
159 virtual void HalfClose() = 0;
160
169 virtual void Abort() = 0;
170
183 virtual auto GetStatus() const -> absl::Status = 0;
184
192 [[nodiscard]] virtual auto GetId() const -> std::string = 0;
193
204 [[nodiscard]] virtual auto GetImpl() const -> const void* { return nullptr; }
205
216 template <typename T>
217 [[nodiscard]] auto GetImpl() const -> T* {
218 return static_cast<T*>(GetImpl());
219 }
220};
221
222} // namespace act
223
224#endif // ACTIONENGINE_NET_STREAM_H_
Concurrency utilities for ActionEngine.
Definition stream.h:44
virtual auto Receive(absl::Duration timeout) -> absl::StatusOr< std::optional< WireMessage > >=0
virtual auto Start() -> absl::Status=0
auto GetImpl() const -> T *
Definition stream.h:217
virtual auto GetStatus() const -> absl::Status=0
virtual auto GetId() const -> std::string=0
virtual void HalfClose()=0
virtual void Abort()=0
virtual auto Accept() -> absl::Status=0
virtual auto Send(WireMessage message) -> absl::Status=0
virtual auto GetImpl() const -> const void *
Definition stream.h:204
Definition types.h:274
ActionEngine data structures used to implement actions and nodes (data streams).