-
Notifications
You must be signed in to change notification settings - Fork 182
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
eCAL 6 API Review #1832
Comments
Could we keep at least the |
Yes, the id should be there, and we would support e.g. comparing for equality, but I'd like to keep the actual ID private, as it's only a pseudo random number and has no meaning to the user. |
Sounds perfect, thanks. |
Actually, I thought about it, and this isn't great, especially when considering non-C++ usage. So for context I'm working on some Go bindings and applications and I store the Id selected Id to filter out the correct topic when updating the screen. The problem with your proposal to hide the value of the ID is that the filtering must be performed in C++. Additionally, it means having to keep the underlying C++ object alive for the duration I need it; which I solved for the publisher/subscribers but its needless complexity. As you say, the absolute value of the ID doesn't inherently mean anything except "this is the unique identifier for this eCAL entity". So to me, there's no harm in being able to get the value, its not like one can do anything bad with it anyway; it just needs to be clear it is only to be effectively used as a UUID for that entity. If you don't want to directly expose the backing mechanism for the IDs then I ask for a function to map it to a primitive type like a uint64 or string; at least then you can change the implementation should the need arrive. Hope that's generally agreeable. 😃 |
Context
We need to review API for eCAL 6.
Proposal
Misc
inline v6
namespace: we should either use it everywhere, or maybe nowhere. Let's discuss it!eCAL Core API
ecal_util.h
Remove:
EnableLoopback
as it can be set via … #1833SplitCombinedTopicType@KerstinKeller (deprecate only, as used still by player / recorder / others)CombinedTopicEncodingAndType@KerstinKeller (deprecate only, as used still by player / recorder / others)Review again: @Peguen
ecal_types.h
@rex-schilaskyecal_tlayer.h
@KerstinKellereSendMode
,STLayer
, [core] remove eSendMode and STLayer as configuration is now handled d… #1845ecal_publisher.h
/ecal_subscriber.h
SCallbackData
? Should callbacks still containid
? (msg subscribers?)ecal_registration.h
(to review again @KerstinKeller @rex-schilasky )
GetTopicNames
,GetServerMethodNames
andGetClientMethodNames
?ecal_process.h
@hannemneCAL API Redesign: @rex-schilasky
GetServiceID
([core] get service id implementation #1875)DataTypeInformation
proto field on registration layer ([core] service client use datainfo #1876)MethodCallbackT
type usingSServiceMethodInformation
insteadMethodCallbackT = std::function<int(const std::string& method_, const std::string& req_type_, const std::string& resp_type_, const std::string& request_, std::string& response_)>
([core] service client use datainfo #1876)GetServiceID
([core] get service id implementation #1875)SServiceResponse
to useSServiceMethodId
instead single elements ([core] new service response struct/callback type using SServiceMethodID #1881)WriterAttr
->PublisherAttr
Write
->Send
void*
&size_t
,std::string
,PayloadWriter
) -> do we still need them all?GetTopicName
if it is part ofGetTopicId()
-> or should that return only theEntityId
?ReaderAttr
->SubscriberAttr
Read
->???
Deprecate / Review: @hannemn
ecal_monitoring.h
ecal_log.h
@PeguenECAL_API void Log(const std::string& msg_);
(user should always specify level with each logging operation)ecal_deprecate.h
ecal_core.h
@hannemnSetUnitName
-> Can be set viaeCAL::Initialize()
(Initialize: @hannemn
ECAL_API int Initialize(int argc_ = 0, char **argv_ = nullptr, const char *unit_name_ = nullptr, unsigned int components_ = Init::Default);
Initialize();
version without config.IsInitialized
, make 2 functions, one without argument, one with component argument@rex-schilasky
ecal_configuration.h
@PeguenECAL_API TransportLayer::Configuration& GetTransportLayerConfiguration ();
Move all helperfunctions to internal config header(We probably do need them, maybe we can review them)ecal_callback.h
/ecal_callback_cimpl.h
SServiceAttr.tcp_port_v0
check other attributes (e.g.
key
Server / Client Callbacks should contain Attributes of the other
Might only contain ServerID / ClientID, as user can request other information via Registration method? @rex-schilasky
Make all API functions internal
config/transport_layer.h
-> same type for local / network confighost_group_name
->shm_transport_domain
@Peguenprotocol_v0
-> remove from configuration. and remove from code. service protocol 0 removed #1846dynamic.h
@hannemn
ecal_XXX.h
andecal_XXX_cimpl.h
Misc:
eCAL::Configuration header files
GetYamlFilePath
->GetConfigurationFilePath
@PegueneCAL Msg API
msg/publisher.h
/msg/subscriber.h
@KerstinKellerCMessagePublisher
similar toCMessageSubscriber
to add Serialization specific specific types a lot easier.canproto
Send
takes a builder instead of no arguments. (see also Using eCAL with capnproto #1843)eCAL Python API
eCAL C API
This probably requires some code duplication (E.g. some types like
eCAL_Suscriber_Event
are used by both C and C++ API.)Will also require clear naming schema ([core_c] Move implementation to lang folder. #1904)
eCAL_Sub_Receive_Alloc
/eCAL_Sub_Receive_Buffer_Alloc
,eCAL_Sub_SetID
,eCAL_Sub_SetAttribute
, and more...desc_length
field for descriptor. Even better, we create a struct for theSDatatypeInformationC
eCAL C# API
No response
The text was updated successfully, but these errors were encountered: