OpenAPI: Export images written and images with write error

This commit is contained in:
2026-03-05 16:12:31 +01:00
parent 7147a31167
commit 92dbc35098
10 changed files with 129 additions and 5 deletions

View File

@@ -1114,5 +1114,9 @@ org::openapitools::server::model::Image_pusher_status Convert(const ImagePusherS
break;
}
ret.setPusherType(tmp);
if (input.images_written)
ret.setImagesWritten(input.images_written.value());
if (input.images_write_error)
ret.setImagesWriteError(input.images_write_error.value());
return ret;
}

View File

@@ -22,6 +22,10 @@ namespace org::openapitools::server::model
Image_pusher_status::Image_pusher_status()
{
m_Connected_writers = 0L;
m_Images_written = 0L;
m_Images_writtenIsSet = false;
m_Images_write_error = 0L;
m_Images_write_errorIsSet = false;
}
@@ -65,7 +69,7 @@ bool Image_pusher_status::validate(std::stringstream& msg, const std::string& pa
}
}
return success;
}
@@ -81,8 +85,14 @@ bool Image_pusher_status::operator==(const Image_pusher_status& rhs) const
&&
(getConnectedWriters() == rhs.getConnectedWriters())
&&
((!imagesWrittenIsSet() && !rhs.imagesWrittenIsSet()) || (imagesWrittenIsSet() && rhs.imagesWrittenIsSet() && getImagesWritten() == rhs.getImagesWritten())) &&
((!imagesWriteErrorIsSet() && !rhs.imagesWriteErrorIsSet()) || (imagesWriteErrorIsSet() && rhs.imagesWriteErrorIsSet() && getImagesWriteError() == rhs.getImagesWriteError()))
;
}
@@ -97,6 +107,10 @@ void to_json(nlohmann::json& j, const Image_pusher_status& o)
j["pusher_type"] = o.m_Pusher_type;
j["addr"] = o.m_Addr;
j["connected_writers"] = o.m_Connected_writers;
if(o.imagesWrittenIsSet())
j["images_written"] = o.m_Images_written;
if(o.imagesWriteErrorIsSet())
j["images_write_error"] = o.m_Images_write_error;
}
@@ -105,6 +119,16 @@ void from_json(const nlohmann::json& j, Image_pusher_status& o)
j.at("pusher_type").get_to(o.m_Pusher_type);
j.at("addr").get_to(o.m_Addr);
j.at("connected_writers").get_to(o.m_Connected_writers);
if(j.find("images_written") != j.end())
{
j.at("images_written").get_to(o.m_Images_written);
o.m_Images_writtenIsSet = true;
}
if(j.find("images_write_error") != j.end())
{
j.at("images_write_error").get_to(o.m_Images_write_error);
o.m_Images_write_errorIsSet = true;
}
}
@@ -132,6 +156,40 @@ void Image_pusher_status::setConnectedWriters(int64_t const value)
{
m_Connected_writers = value;
}
int64_t Image_pusher_status::getImagesWritten() const
{
return m_Images_written;
}
void Image_pusher_status::setImagesWritten(int64_t const value)
{
m_Images_written = value;
m_Images_writtenIsSet = true;
}
bool Image_pusher_status::imagesWrittenIsSet() const
{
return m_Images_writtenIsSet;
}
void Image_pusher_status::unsetImages_written()
{
m_Images_writtenIsSet = false;
}
int64_t Image_pusher_status::getImagesWriteError() const
{
return m_Images_write_error;
}
void Image_pusher_status::setImagesWriteError(int64_t const value)
{
m_Images_write_error = value;
m_Images_write_errorIsSet = true;
}
bool Image_pusher_status::imagesWriteErrorIsSet() const
{
return m_Images_write_errorIsSet;
}
void Image_pusher_status::unsetImages_write_error()
{
m_Images_write_errorIsSet = false;
}
} // namespace org::openapitools::server::model

View File

@@ -75,6 +75,20 @@ public:
/// </summary>
int64_t getConnectedWriters() const;
void setConnectedWriters(int64_t const value);
/// <summary>
/// Number of images written to the image socket. This number is updated live during operation for TCP/IP image socket and direct HDF5 writer. It is updated at the end of experiment for ZeroMQ image socket.
/// </summary>
int64_t getImagesWritten() const;
void setImagesWritten(int64_t const value);
bool imagesWrittenIsSet() const;
void unsetImages_written();
/// <summary>
/// Number of images that could not be written to the image socket. This number is updated live during operation for TCP/IP image socket. No other socket use it.
/// </summary>
int64_t getImagesWriteError() const;
void setImagesWriteError(int64_t const value);
bool imagesWriteErrorIsSet() const;
void unsetImages_write_error();
friend void to_json(nlohmann::json& j, const Image_pusher_status& o);
friend void from_json(const nlohmann::json& j, Image_pusher_status& o);
@@ -85,6 +99,10 @@ protected:
int64_t m_Connected_writers;
int64_t m_Images_written;
bool m_Images_writtenIsSet;
int64_t m_Images_write_error;
bool m_Images_write_errorIsSet;
};

View File

@@ -1372,6 +1372,20 @@ components:
Number of connected writers
For ZeroMQ image socket: number is constant
For TCP/IP image socket: number is updated live during operation
images_written:
type: integer
format: int64
description: |
Number of images written to the image socket.
This number is updated live during operation for TCP/IP image socket and direct HDF5 writer.
It is updated at the end of experiment for ZeroMQ image socket.
images_write_error:
type: integer
format: int64
description: |
Number of images that could not be written to the image socket.
This number is updated live during operation for TCP/IP image socket.
No other socket use it.
plot:
type: object
required:

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,8 @@ Name | Type | Description | Notes
**pusher_type** | [**ImagePusherType**](ImagePusherType.md) | | [default to ImagePusherType.NONE]
**addr** | **List[str]** | List of addresses of image pushers. For HDF5 socket - no addresses will be returned. For ZeroMQ - list of addresses for each socket will be provided. For TCP/IP - single address to connect all writers will be provided. |
**connected_writers** | **int** | Number of connected writers For ZeroMQ image socket: number is constant For TCP/IP image socket: number is updated live during operation |
**images_written** | **int** | Number of images written to the image socket. This number is updated live during operation for TCP/IP image socket and direct HDF5 writer. It is updated at the end of experiment for ZeroMQ image socket. | [optional]
**images_write_error** | **int** | Number of images that could not be written to the image socket. This number is updated live during operation for TCP/IP image socket. No other socket use it. | [optional]
## Example

View File

@@ -26,5 +26,19 @@ export type image_pusher_status = {
*
*/
connected_writers: number;
/**
* Number of images written to the image socket.
* This number is updated live during operation for TCP/IP image socket and direct HDF5 writer.
* It is updated at the end of experiment for ZeroMQ image socket.
*
*/
images_written?: number;
/**
* Number of images that could not be written to the image socket.
* This number is updated live during operation for TCP/IP image socket.
* No other socket use it.
*
*/
images_write_error?: number;
};

View File

@@ -17,6 +17,8 @@ struct ImagePusherStatus {
ImagePusherType pusher_type = ImagePusherType::None;
std::vector<std::string> address = {};
size_t connected_writers = 0;
std::optional<size_t> images_written = 0;
std::optional<size_t> images_write_error = 0;
};
struct ImagePusherQueueElement {
@@ -43,11 +45,18 @@ public:
virtual std::vector<std::string> GetAddress() const { return {}; }
virtual std::optional<uint64_t> GetImagesWritten() const { return std::nullopt; }
virtual std::optional<uint64_t> GetImagesWriteError() const { return std::nullopt; }
virtual size_t GetConnectedWriters() const { return 0; };
virtual ImagePusherType GetType() const = 0;
ImagePusherStatus GetStatus() const {
return ImagePusherStatus{GetType(), GetAddress(), GetConnectedWriters()};
return ImagePusherStatus{
GetType(),
GetAddress(),
GetConnectedWriters(),
GetImagesWritten(),
GetImagesWriteError()
};
}
};

View File

@@ -1131,3 +1131,7 @@ std::string TCPStreamPusher::PrintSetup() const {
std::optional<uint64_t> TCPStreamPusher::GetImagesWritten() const {
return total_data_acked_ok.load(std::memory_order_relaxed);
}
std::optional<uint64_t> TCPStreamPusher::GetImagesWriteError() const {
return total_data_acked_bad.load(std::memory_order_relaxed);
}

View File

@@ -184,5 +184,6 @@ public:
std::string PrintSetup() const override;
std::optional<uint64_t> GetImagesWritten() const override;
std::optional<uint64_t> GetImagesWriteError() const override;
ImagePusherType GetType() const override { return ImagePusherType::TCP; }
};