changeset 81:c6b6051b1b1a

Build rpcrequest types. May be a misdirection
author Chris Cannam <c.cannam@qmul.ac.uk>
date Tue, 11 Oct 2016 16:25:52 +0100
parents d9e85a65d45b
children fa2c0358c2b6
files vamp-client/client.cpp vamp-support/PluginHandleMapper.h
diffstat 2 files changed, 31 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/vamp-client/client.cpp	Tue Oct 11 15:49:28 2016 +0100
+++ b/vamp-client/client.cpp	Tue Oct 11 16:25:52 2016 +0100
@@ -5,11 +5,32 @@
 
 #include "vamp-support/AssignedPluginHandleMapper.h"
 
-namespace piper {
+namespace piper { //!!! probably something different
 
 class PiperClient : public PiperClientBase
 {
+    // unsigned to avoid undefined behaviour on possible wrap
+    typedef uint32_t ReqId;
+    
 public:
+
+    PiperClient() { }
+
+    Vamp::Plugin *
+    load(std::string key, float inputSampleRate, int adapterFlags) {
+
+        Vamp::HostExt::LoadRequest request;
+        request.pluginKey = key;
+        request.inputSampleRate = inputSampleRate;
+        request.adapterFlags = adapterFlags;
+
+        ::capnp::MallocMessageBuilder message;
+        RpcRequest::Builder builder = message.initRoot<RpcRequest>();
+
+        VampnProto::buildRpcRequest_Load(builder, request);
+        ReqId id = getId();
+        builder.getId().setNumber(id);
+    };     
     
     virtual
     Vamp::Plugin::OutputList
@@ -24,9 +45,11 @@
         RpcRequest::Builder builder = message.initRoot<RpcRequest>();
 
         VampnProto::buildRpcRequest_Configure(builder, request, m_mapper);
+        ReqId id = getId();
+        builder.getId().setNumber(id);
 
         //!!! now what?
-    }
+    };
     
     
     virtual
@@ -40,6 +63,11 @@
 
 private:
     AssignedPluginHandleMapper m_mapper;
+    int getId() {
+        //!!! todo: mutex
+        static ReqId m_nextId = 0;
+        return m_nextId++;
+    }
 };
     
 }
--- a/vamp-support/PluginHandleMapper.h	Tue Oct 11 15:49:28 2016 +0100
+++ b/vamp-support/PluginHandleMapper.h	Tue Oct 11 16:25:52 2016 +0100
@@ -60,7 +60,7 @@
 class PluginHandleMapper
 {
 public:
-    typedef int32_t Handle;
+    typedef uint32_t Handle; // unsigned to avoid undefined behaviour on possible wrap
     const Handle INVALID_HANDLE = 0;
 
     virtual ~PluginHandleMapper() noexcept { }