Skip to content

Mf fix proxy event factory template - #1418

Open
crimson11 wants to merge 4 commits into
mainfrom
mf_fix_proxy_event_factory_template
Open

crimson11 wants to merge 4 commits into
mainfrom
mf_fix_proxy_event_factory_template

Conversation

@crimson11

Copy link
Copy Markdown
Contributor

No description provided.

…nt binding factory

Since the proxy-side binding layer was made type-erased,
IProxyEventBindingFactory/ProxyEventBindingFactory/ProxyEventBindingFactoryImpl no longer
reference SampleType in their implementation. Remove the now unused template parameter
and move the (now non-template) implementations to .cpp files.

IProxyFieldBindingFactory is also de-templated for the same reason (its interface methods
never referenced SampleType).
…dingFactory

Previously ProxyEventBindingFactoryImpl::Create()/
ProxyFieldBindingFactoryImpl::CreateEventBinding() did not
receive the event's DataTypeSizeInfo from the caller, even though only
the binding-independent layer (which knows the concrete SampleType)
can correctly compute it. This went undetected because lola::ProxyEvent
happened to fetch the type info itself from the EventMetaInfo stored in
shared-memory via its parent Proxy. This works only for LoLa and only
because LoLa publishes type metadata into shared-memory for the generic
proxy use-case; other bindings have (most likely) no such mechanism and
would need the type info passed in explicitly.

- IProxyEventBindingFactory::Create() (and its ProxyEventBindingFactory/
  ProxyEventBindingFactoryImpl implementations) now take an additional
  memory::DataTypeSizeInfo parameter, computed by the caller (ProxyEvent<SampleType>)
  via CreateDataTypeSizeInfoFromTypes<SampleType>().
- IGenericProxyEventBindingFactory::Create() is intentionally left unchanged:
  a generic proxy event has no known SampleType at its call site, so
  it continues to look up the DataTypeSizeInfo from
  the EventMetaInfo stored in shared-memory for that case (passed as
  std::nullopt).
- lola::ProxyEvent now receives its DataTypeSizeInfo via constructor
  parameter instead of looking it up itself from its parent Proxy's
  shared-memory EventMetaInfo.
…ctory

Since the proxy-side binding layer is now type-erased,
ProxyFieldBindingFactory and ProxyMethodBindingFactory don't need template
argumens regarding SampleType/Signature as they can be replaced by non-template
DataTypeSizeInfo call-arguments in the create-functions, which are created on
the binding independent layer.
…thodBindingFactory

Removed unused members of lola::SkeletonMethod (in_args_type_erased_info_
and return_type_type_erased_info_).

To keep the factory signature consistent with the fact that only the
binding-independent layer (which knows the concrete method signature)
has the in-arg/return type info, and to allow other (non-LoLa) bindings
to receive this info when creating their
binding-specific SkeletonMethod, this commit:

- Extends ISkeletonMethodBindingFactory::Create() (and its
  SkeletonMethodBindingFactory/SkeletonMethodBindingFactoryImpl
  implementations) with two additional
  std::optional<memory::DataTypeSizeInfo> parameters, computed by the
  caller (SkeletonMethod<ReturnType(ArgTypes...)>) via
  TypeErasedMethodSignatureInfo<Signature>::InArgsTypeInfo()/
  ReturnTypeInfo().
- Removes the dead in_args_type_erased_info_/
  return_type_type_erased_info_ members from lola::SkeletonMethod,
  since the LoLa binding doesn't need this info (it currently gets the
  size/alignment info it needs from the proxy-side call queue, same as
  before).
@crimson11
crimson11 force-pushed the mf_fix_proxy_event_factory_template branch from 456ba08 to 7c25686 Compare October 21, 2026 11:09

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant