50 lines
988 B
C++
50 lines
988 B
C++
#include <mutex>
|
|
|
|
struct connection_info {
|
|
};
|
|
|
|
struct data_packet {
|
|
};
|
|
|
|
struct connection_handle {
|
|
void send_data(data_packet const&) {}
|
|
data_packet receive_data() { return data_packet(); }
|
|
};
|
|
|
|
struct remote_connection_manager {
|
|
connection_handle open(connection_info const&) { return connection_handle(); }
|
|
} connection_manager;
|
|
|
|
class X {
|
|
private:
|
|
connection_info connection_details;
|
|
connection_handle connection;
|
|
std::once_flag connection_init_flag;
|
|
|
|
void open_connection()
|
|
{
|
|
connection = connection_manager.open(connection_details);
|
|
}
|
|
|
|
public:
|
|
X(connection_info const& connection_details_)
|
|
: connection_details(connection_details_)
|
|
{
|
|
}
|
|
void send_data(data_packet const& data)
|
|
{
|
|
std::call_once(connection_init_flag, &X::open_connection, this);
|
|
connection.send_data(data);
|
|
}
|
|
data_packet receive_data()
|
|
{
|
|
std::call_once(connection_init_flag, &X::open_connection, this);
|
|
return connection.receive_data();
|
|
}
|
|
};
|
|
|
|
int
|
|
main()
|
|
{
|
|
}
|