Skip to content

Commit 3b5a86a

Browse files
committed
make those AAPXS v2 stuff more consistent.
1 parent fd4c9b7 commit 3b5a86a

File tree

4 files changed

+107
-129
lines changed

4 files changed

+107
-129
lines changed

androidaudioplugin/src/main/cpp/core/hosting/PluginInstance.Local.cpp

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,16 @@ void aap::LocalPluginInstance::process(int32_t frameCount, int32_t timeoutInNano
181181
#endif
182182
}
183183

184+
// ---- AAPXS v2
185+
186+
// initialization
184187
void aap::LocalPluginInstance::setupAAPXSServiceInstance(aap::AAPXSServiceFeatureRegistry *registry,
185188
aap::AAPXSServiceInstanceManagerVNext *serviceInstances,
186189
AAPXSSerializationContext *serialization) {
187190
std::for_each(registry->begin(), registry->end(), [&](AAPXSFeatureVNext* f) {
191+
// host extensions
188192
serviceInstances->addInitiator(populateAAPXSInitiatorInstance(serialization), f->uri);
193+
// plugin extensions
189194
serviceInstances->addRecipient(populateAAPXSRecipientInstance(serialization), f->uri);
190195
});
191196
}
@@ -210,6 +215,24 @@ aap::LocalPluginInstance::populateAAPXSInitiatorInstance(AAPXSSerializationConte
210215
return instance;
211216
}
212217

218+
// get by Uri/Urid
219+
AAPXSRecipientInstance* aap::LocalPluginInstance::getPluginAAPXSInstance(const char *uri) {
220+
return &instance_manager.getPluginAAPXSByUri(uri);
221+
}
222+
223+
AAPXSRecipientInstance* aap::LocalPluginInstance::getPluginAAPXSInstance(int32_t urid) {
224+
return &instance_manager.getPluginAAPXSByUrid(urid);
225+
}
226+
227+
AAPXSInitiatorInstance *aap::LocalPluginInstance::getHostAAPXSInstance(const char *uri) {
228+
return &instance_manager.getHostAAPXSByUri(uri);
229+
}
230+
231+
AAPXSInitiatorInstance *aap::LocalPluginInstance::getHostAAPXSInstance(int32_t urid) {
232+
return &instance_manager.getHostAAPXSByUrid(urid);
233+
}
234+
235+
// send/receive
213236
void aap::LocalPluginInstance::processExtensionRequest(const char *uri, int32_t messageSize,
214237
int32_t opcode, int32_t requestId) {
215238
auto aapxs = getPluginAAPXSInstance(uri);
@@ -218,6 +241,17 @@ void aap::LocalPluginInstance::processExtensionRequest(const char *uri, int32_t
218241
aapxs->process_incoming_aapxs_request(aapxs, &context);
219242
}
220243

244+
void aap::LocalPluginInstance::sendExtensionReply(const char *uri, int32_t opcode, void *data,
245+
int32_t dataSize, int32_t requestId) {
246+
auto aapxs = getPluginAAPXSInstance(uri);
247+
assert(aapxs != nullptr);
248+
AAPXSRequestContext context{nullptr, nullptr, aapxs->serialization, uri, requestId, opcode};
249+
assert(aapxs->serialization->data_capacity >= dataSize);
250+
memcpy(aapxs->serialization->data, data, dataSize);
251+
aapxs->serialization->data_size = dataSize;
252+
aapxs->send_aapxs_reply(aapxs, &context);
253+
}
254+
221255
void aap::LocalPluginInstance::sendHostExtensionRequest(const char* uri, int32_t opcode, void *data, int32_t dataSize) {
222256
int32_t requestId = aapxsRequestIdSerial();
223257
auto aapxs = getHostAAPXSInstance(uri);
@@ -231,34 +265,8 @@ void aap::LocalPluginInstance::sendHostExtensionRequest(const char* uri, int32_t
231265

232266
void aap::LocalPluginInstance::processHostExtensionReply(const char *uri, int32_t messageSize,
233267
int32_t opcode, int32_t requestId) {
234-
// FIXME: implement
235-
// should be almost the same as client plugin extension reply handler (that means, we need aapxs_session here too)
236-
throw std::runtime_error("FIXME: implement");
237-
}
238-
239-
void aap::LocalPluginInstance::sendExtensionReply(const char *uri, int32_t opcode, void *data,
240-
int32_t dataSize, int32_t requestId) {
241-
auto aapxs = getPluginAAPXSInstance(uri);
268+
auto aapxs = getHostAAPXSInstance(uri);
242269
assert(aapxs != nullptr);
243270
AAPXSRequestContext context{nullptr, nullptr, aapxs->serialization, uri, requestId, opcode};
244-
assert(aapxs->serialization->data_capacity >= dataSize);
245-
memcpy(aapxs->serialization->data, data, dataSize);
246-
aapxs->serialization->data_size = dataSize;
247-
aapxs->send_aapxs_reply(aapxs, &context);
248-
}
249-
250-
AAPXSRecipientInstance* aap::LocalPluginInstance::getPluginAAPXSInstance(const char *uri) {
251-
return &instance_manager.getPluginAAPXSByUri(uri);
252-
}
253-
254-
AAPXSRecipientInstance* aap::LocalPluginInstance::getPluginAAPXSInstance(int32_t urid) {
255-
return &instance_manager.getPluginAAPXSByUrid(urid);
256-
}
257-
258-
AAPXSInitiatorInstance *aap::LocalPluginInstance::getHostAAPXSInstance(const char *uri) {
259-
return &instance_manager.getHostAAPXSByUri(uri);
260-
}
261-
262-
AAPXSInitiatorInstance *aap::LocalPluginInstance::getHostAAPXSInstance(int32_t urid) {
263-
return &instance_manager.getHostAAPXSByUrid(urid);
271+
aapxs->process_incoming_aapxs_reply(aapxs, &context);
264272
}

androidaudioplugin/src/main/cpp/core/hosting/PluginInstance.Remote.cpp

Lines changed: 61 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,6 @@ void aap::RemotePluginInstance::processExtensionReply(const char *uri, int32_t m
9797
}
9898
}
9999

100-
void aap::RemotePluginInstance::processHostExtensionRequest(const char *uri, int32_t messageSize,
101-
int32_t opcode, int32_t requestId) {
102-
assert(false); // FIXME: implement
103-
}
104-
105100
void aap::RemotePluginInstance::prepare(int frameCount) {
106101
if (instantiation_state != PLUGIN_INSTANTIATION_STATE_UNPREPARED) {
107102
aap::a_log_f(AAP_LOG_LEVEL_ERROR, LOG_TAG,
@@ -257,28 +252,40 @@ aap::RemoteAAPXSManager::staticProcessExtensionReply(AAPXSClientInstance *client
257252
thisObj->processExtensionReply(clientInstance->uri, messageSize, opcode, requestId);
258253
}
259254

260-
void aap::RemotePluginInstance::sendExtensionRequest(const char* uri, int32_t opcode, void *data, int32_t dataSize) {
261-
int32_t requestId = aapxsRequestIdSerial();
262-
auto aapxs = getPluginAAPXSInstance(uri);
263-
assert(aapxs != nullptr);
264-
AAPXSRequestContext context{nullptr, nullptr, aapxs->serialization, uri, requestId, opcode};
265-
assert(aapxs->serialization->data_capacity >= dataSize);
266-
memcpy(aapxs->serialization->data, data, dataSize);
267-
aapxs->serialization->data_size = dataSize;
268-
aapxs->send_aapxs_request(aapxs, &context);
255+
// ---- AAPXS v2
256+
257+
// initialization
258+
void aap::RemotePluginInstance::setupAAPXSClientInstances(aap::AAPXSClientFeatureRegistry *registry,
259+
aap::AAPXSClientInstanceManagerVNext *clientInstances,
260+
AAPXSSerializationContext *serialization) {
261+
std::for_each(registry->begin(), registry->end(), [&](AAPXSFeatureVNext* f) {
262+
// plugin extensions
263+
clientInstances->addInitiator(populateAAPXSInitiatorInstance(serialization), f->uri);
264+
// host extensions
265+
clientInstances->addRecipient(populateAAPXSRecipientInstance(serialization), f->uri);
266+
});
269267
}
270268

271-
void aap::RemotePluginInstance::sendHostExtensionReply(const char *uri, int32_t opcode, void *data,
272-
int32_t dataSize, int32_t requestId) {
273-
auto aapxs = getHostAAPXSInstance(uri);
274-
assert(aapxs != nullptr);
275-
AAPXSRequestContext context{nullptr, nullptr, aapxs->serialization, uri, requestId, opcode};
276-
assert(aapxs->serialization->data_capacity >= dataSize);
277-
memcpy(aapxs->serialization->data, data, dataSize);
278-
aapxs->serialization->data_size = dataSize;
279-
aapxs->send_aapxs_reply(aapxs, &context);
269+
AAPXSInitiatorInstance aap::RemotePluginInstance::populateAAPXSInitiatorInstance(AAPXSSerializationContext* serialization) {
270+
AAPXSInitiatorInstance instance{this,
271+
serialization,
272+
staticGetNewRequestId,
273+
staticSendAAPXSRequest,
274+
staticProcessIncomingAAPXSReply};
275+
return instance;
280276
}
281277

278+
AAPXSRecipientInstance aap::RemotePluginInstance::populateAAPXSRecipientInstance(
279+
AAPXSSerializationContext *serialization) {
280+
AAPXSRecipientInstance instance{this,
281+
serialization,
282+
staticGetNewRequestId,
283+
staticProcessIncomingAAPXSRequest,
284+
staticSendAAPXSReply};
285+
return instance;
286+
}
287+
288+
// get by Uri/Urid
282289
AAPXSInitiatorInstance* aap::RemotePluginInstance::getPluginAAPXSInstance(const char *uri) {
283290
return &instance_manager.getPluginAAPXSByUri(uri);
284291
}
@@ -295,32 +302,39 @@ AAPXSRecipientInstance *aap::RemotePluginInstance::getHostAAPXSInstance(int32_t
295302
return &instance_manager.getHostAAPXSByUrid(urid);
296303
}
297304

298-
AAPXSInitiatorInstance aap::RemotePluginInstance::populateAAPXSInitiatorInstance(AAPXSSerializationContext* serialization) {
299-
AAPXSInitiatorInstance instance{this,
300-
serialization,
301-
staticGetNewRequestId,
302-
staticSendAAPXSRequest,
303-
staticProcessIncomingAAPXSReply};
304-
return instance;
305+
// send/receive
306+
void aap::RemotePluginInstance::sendExtensionRequest(const char* uri, int32_t opcode, void *data, int32_t dataSize) {
307+
int32_t requestId = aapxsRequestIdSerial();
308+
auto aapxs = getPluginAAPXSInstance(uri);
309+
assert(aapxs != nullptr);
310+
AAPXSRequestContext context{nullptr, nullptr, aapxs->serialization, uri, requestId, opcode};
311+
assert(aapxs->serialization->data_capacity >= dataSize);
312+
memcpy(aapxs->serialization->data, data, dataSize);
313+
aapxs->serialization->data_size = dataSize;
314+
aapxs->send_aapxs_request(aapxs, &context);
305315
}
306316

307-
AAPXSRecipientInstance aap::RemotePluginInstance::populateAAPXSRecipientInstance(
308-
AAPXSSerializationContext *serialization) {
309-
AAPXSRecipientInstance instance{this,
310-
serialization,
311-
staticGetNewRequestId,
312-
staticProcessIncomingAAPXSRequest,
313-
staticSendAAPXSReply};
314-
return instance;
317+
void aap::RemotePluginInstance::processExtensionReply(const char *uri, int32_t opcode, void* data, int32_t dataSize, int32_t requestId) {
318+
auto aapxs = getPluginAAPXSInstance(uri);
319+
assert(aapxs != nullptr);
320+
AAPXSRequestContext context{nullptr, nullptr, aapxs->serialization, uri, requestId, opcode};
321+
aapxs->process_incoming_aapxs_reply(aapxs, &context);
315322
}
316323

317-
void
318-
aap::RemotePluginInstance::setupAAPXSClientInstances(aap::AAPXSClientFeatureRegistry *registry, aap::AAPXSClientInstanceManagerVNext *clientInstances,
319-
AAPXSSerializationContext *serialization) {
320-
std::for_each(registry->begin(), registry->end(), [&](AAPXSFeatureVNext* f) {
321-
// plugin extensions
322-
clientInstances->addInitiator(populateAAPXSInitiatorInstance(serialization), f->uri);
323-
// host extensions
324-
clientInstances->addRecipient(populateAAPXSRecipientInstance(serialization), f->uri);
325-
});
324+
void aap::RemotePluginInstance::processHostExtensionRequest(const char *uri, int32_t opcode, void* data, int32_t dataSize, int32_t requestId) {
325+
auto aapxs = getHostAAPXSInstance(uri);
326+
assert(aapxs != nullptr);
327+
AAPXSRequestContext context{nullptr, nullptr, aapxs->serialization, uri, requestId, opcode};
328+
aapxs->process_incoming_aapxs_request(aapxs, &context);
329+
}
330+
331+
void aap::RemotePluginInstance::sendHostExtensionReply(const char *uri, int32_t opcode, void *data,
332+
int32_t dataSize, int32_t requestId) {
333+
auto aapxs = getHostAAPXSInstance(uri);
334+
assert(aapxs != nullptr);
335+
AAPXSRequestContext context{nullptr, nullptr, aapxs->serialization, uri, requestId, opcode};
336+
assert(aapxs->serialization->data_capacity >= dataSize);
337+
memcpy(aapxs->serialization->data, data, dataSize);
338+
aapxs->serialization->data_size = dataSize;
339+
aapxs->send_aapxs_reply(aapxs, &context);
326340
}

include/aap/core/aapxs/aapxs-runtime.h

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef AAP_CORE_AAPXS_RUNTIME_H
22
#define AAP_CORE_AAPXS_RUNTIME_H
33

4-
// The new 2023 version of AAPXS runtime - strongly typed.
4+
// AAPXS v2 runtime - strongly typed.
55

66
#include <assert.h>
77
#include <cstdint>
@@ -11,49 +11,6 @@
1111
#include "../../android-audio-plugin.h"
1212

1313
namespace aap {
14-
15-
class AAPXSClientSerializer {
16-
void serializePluginRequest(AAPXSSerializationContext *context);
17-
};
18-
19-
class AAPXSServiceSerializer {
20-
void serializePluginReply(AAPXSSerializationContext *context);
21-
};
22-
23-
typedef struct AAPXSClientHandler {
24-
AAPXSProxyContextVNext
25-
(*as_plugin_proxy)(AAPXSClientHandler *handler, AAPXSClientSerializer *serializer);
26-
27-
void (*on_host_invoked)(AAPXSClientHandler *handler, AAPXSClientSerializer *serializer,
28-
AndroidAudioPluginHost *host, int32_t opcode);
29-
} AAPXSClientHandler;
30-
31-
typedef struct AAPXSServiceHandler {
32-
AAPXSProxyContextVNext
33-
(*as_host_proxy)(AAPXSServiceHandler *handler, AAPXSServiceSerializer *serializer);
34-
35-
void (*on_plugin_invoked)(AAPXSServiceHandler *handler, AAPXSServiceSerializer *serializer,
36-
AndroidAudioPlugin *plugin, int32_t opcode);
37-
} AAPXSServiceHandler;
38-
39-
typedef struct AAPXSInstanceManager {
40-
void *host_context;
41-
42-
AAPXSClientSerializer *(*get_client_serializer)();
43-
44-
AAPXSServiceSerializer *(*get_service_serializer)();
45-
46-
AAPXSClientHandler *(*get_client_handler)();
47-
48-
AAPXSServiceHandler *(*get_service_handler)();
49-
} AAPXSInstanceManager;
50-
51-
class AAPXSClientManager {
52-
AAPXSClientHandler* get(const char* uri);
53-
};
54-
55-
// They are used for sure.
56-
5714
template<typename T, typename R>
5815
struct WithPromise {
5916
T* context;

include/aap/core/host/plugin-instance.h

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -244,14 +244,14 @@ namespace aap {
244244
AAPXSRecipientInstance* getPluginAAPXSInstance(int32_t urid);
245245
AAPXSInitiatorInstance* getHostAAPXSInstance(int32_t urid);
246246

247-
AAPXSInitiatorInstance populateAAPXSInitiatorInstance(AAPXSSerializationContext* serialization);
248-
AAPXSRecipientInstance populateAAPXSRecipientInstance(AAPXSSerializationContext* serialization);
249-
250247
void setupAAPXSServiceInstance(AAPXSServiceFeatureRegistry *registry,
251248
AAPXSServiceInstanceManagerVNext *serviceInstances,
252249
AAPXSSerializationContext *serialization);
253250

254251
private:
252+
AAPXSInitiatorInstance populateAAPXSInitiatorInstance(AAPXSSerializationContext* serialization);
253+
AAPXSRecipientInstance populateAAPXSRecipientInstance(AAPXSSerializationContext* serialization);
254+
255255
std::unique_ptr<AAPXSFeatureRegistryServiceImpl> feature_registry;
256256
AAPXSServiceInstanceManagerVNext instance_manager;
257257
static inline void staticSendHostAAPXSRequest(AAPXSInitiatorInstance* instance, AAPXSRequestContext* context) {
@@ -372,25 +372,24 @@ namespace aap {
372372

373373
// AAPXS v2
374374
void sendExtensionRequest(const char* uri, int32_t opcode, void* data, int32_t dataSize);
375-
376-
void processHostExtensionRequest(const char *uri, int32_t messageSize, int32_t opcode,
377-
int32_t requestId);
375+
void processExtensionReply(const char *uri, int32_t opcode, void* data, int32_t dataSize, int32_t requestId);
376+
void processHostExtensionRequest(const char *uri, int32_t opcode, void* data, int32_t dataSize, int32_t requestId);
378377
void sendHostExtensionReply(const char* uri, int32_t opcode, void* data, int32_t dataSize, int32_t requestId);
379378
//AAPXSInstanceManager* getAAPXSManagerVNext();
380379
AAPXSInitiatorInstance* getPluginAAPXSInstance(const char * uri);
381380
AAPXSRecipientInstance* getHostAAPXSInstance(const char * uri);
382381
AAPXSInitiatorInstance* getPluginAAPXSInstance(int32_t urid);
383382
AAPXSRecipientInstance* getHostAAPXSInstance(int32_t urid);
384383

385-
AAPXSInitiatorInstance populateAAPXSInitiatorInstance(AAPXSSerializationContext* serialization);
386-
AAPXSRecipientInstance populateAAPXSRecipientInstance(AAPXSSerializationContext* serialization);
387-
388384
// delegated implementation for AAPXSFeatureRegistryClientImpl
389385
void setupAAPXSClientInstances(aap::AAPXSClientFeatureRegistry *registry,
390386
aap::AAPXSClientInstanceManagerVNext *clientInstances,
391387
AAPXSSerializationContext *serialization);
392388

393389
private:
390+
AAPXSInitiatorInstance populateAAPXSInitiatorInstance(AAPXSSerializationContext* serialization);
391+
AAPXSRecipientInstance populateAAPXSRecipientInstance(AAPXSSerializationContext* serialization);
392+
394393
std::unique_ptr<AAPXSFeatureRegistryClientImpl> feature_registry;
395394
AAPXSClientInstanceManagerVNext instance_manager;
396395
static inline void staticSendAAPXSRequest(AAPXSInitiatorInstance* instance, AAPXSRequestContext* context) {
@@ -400,7 +399,7 @@ namespace aap {
400399
((RemotePluginInstance*) instance->host_context)->processExtensionReply(context->uri, context->serialization->data_size, context->opcode, context->request_id);
401400
}
402401
static inline void staticProcessIncomingAAPXSRequest(AAPXSRecipientInstance* instance, AAPXSRequestContext* context) {
403-
((RemotePluginInstance*) instance->host_context)->processHostExtensionRequest(context->uri, context->serialization->data_size, context->opcode, context->request_id);
402+
((RemotePluginInstance*) instance->host_context)->processHostExtensionRequest(context->uri, context->opcode, context->serialization->data, context->serialization->data_size, context->request_id);
404403
}
405404
static inline void staticSendAAPXSReply(AAPXSRecipientInstance* instance, AAPXSRequestContext* context) {
406405
((RemotePluginInstance*) instance->host_context)->sendHostExtensionReply(context->uri, context->opcode, context->serialization->data, context->serialization->data_size, context->request_id);

0 commit comments

Comments
 (0)