You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2018/10/19 14:44:27 UTC
nifi-minifi-cpp git commit: MINIFICPP-647: Begin process of
deprecating functions and remove those which were added recently that aren't
needed
Repository: nifi-minifi-cpp
Updated Branches:
refs/heads/master 90dfc06aa -> 8e258f545
MINIFICPP-647: Begin process of deprecating functions and remove those which were added recently that aren't needed
This closes #420.
Signed-off-by: Aldrin Piri <al...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/8e258f54
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/8e258f54
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/8e258f54
Branch: refs/heads/master
Commit: 8e258f545765e978db1e12f5a2d4926f190703b7
Parents: 90dfc06
Author: Marc Parisi <ph...@apache.org>
Authored: Wed Oct 17 19:50:01 2018 -0400
Committer: Aldrin Piri <al...@apache.org>
Committed: Fri Oct 19 10:42:15 2018 -0400
----------------------------------------------------------------------
libminifi/include/capi/api.h | 10 ++++-----
libminifi/src/capi/api.cpp | 37 +++++++++++++---------------------
libminifi/test/capi/CAPITests.cpp | 32 +++++++++++++++--------------
python/minifi/__init__.py | 12 +++--------
4 files changed, 38 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e258f54/libminifi/include/capi/api.h
----------------------------------------------------------------------
diff --git a/libminifi/include/capi/api.h b/libminifi/include/capi/api.h
index dff29ed..94b05fa 100644
--- a/libminifi/include/capi/api.h
+++ b/libminifi/include/capi/api.h
@@ -30,7 +30,10 @@ int initialize_api();
extern "C" {
#endif
-#define API_VERSION "0.01"
+/**
+ * Updates with every release
+ */
+#define API_VERSION "0.02"
void enable_logging();
@@ -39,11 +42,6 @@ void enable_logging();
* BASE NIFI OPERATIONS
* ##################################################################
*/
-nifi_port *create_port(const char *port);
-
-int free_port(nifi_port *port);
-
-
nifi_instance *create_instance(const char *url, nifi_port *port);
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e258f54/libminifi/src/capi/api.cpp
----------------------------------------------------------------------
diff --git a/libminifi/src/capi/api.cpp b/libminifi/src/capi/api.cpp
index 592fb6b..6bec57c 100644
--- a/libminifi/src/capi/api.cpp
+++ b/libminifi/src/capi/api.cpp
@@ -57,38 +57,28 @@ class DirectoryConfiguration {
}
};
-nifi_port *create_port(const char *port) {
- if (nullptr == port)
- return nullptr;
- nifi_port *p = new nifi_port();
- p->port_id = new char[strlen(port) + 1];
- memset(p->port_id, 0x00, strlen(port) + 1);
- strncpy(p->port_id, port, strlen(port));
- return p;
-}
-
-int free_port(nifi_port *port) {
- if (port == nullptr)
- return -1;
- delete[] port->port_id;
- delete port;
- return 0;
-}
-
/**
* Creates a NiFi Instance from the url and output port.
* @param url http URL for NiFi instance
* @param port Remote output port.
+ * @Deprecated for API version 0.2 in favor of the following prototype
+ * nifi_instance *create_instance(nifi_port const *port) {
*/
nifi_instance *create_instance(const char *url, nifi_port *port) {
// make sure that we have a thread safe way of initializing the content directory
DirectoryConfiguration::initialize();
- nifi_instance *instance = new nifi_instance;
-
+ // need reinterpret cast until we move to C for this module.
+ nifi_instance *instance = reinterpret_cast<nifi_instance*>( malloc(sizeof(nifi_instance)) );
+ /**
+ * This API will gradually move away from C++, hence malloc is used for nifi_instance
+ * Since minifi::Instance is currently being used, then we need to use new in that case.
+ */
instance->instance_ptr = new minifi::Instance(url, port->port_id);
- instance->port.port_id = port->port_id;
-
+ // may have to translate port ID here in the future
+ // need reinterpret cast until we move to C for this module.
+ instance->port.port_id = reinterpret_cast<char*>(malloc(strlen(port->port_id) + 1));
+ snprintf(instance->port.port_id, strlen(port->port_id) + 1, "%s", port->port_id);
return instance;
}
@@ -135,7 +125,8 @@ int set_instance_property(nifi_instance *instance, const char *key, const char *
void free_instance(nifi_instance* instance) {
if (instance != nullptr) {
delete ((minifi::Instance*) instance->instance_ptr);
- delete instance;
+ free(instance->port.port_id);
+ free(instance);
}
}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e258f54/libminifi/test/capi/CAPITests.cpp
----------------------------------------------------------------------
diff --git a/libminifi/test/capi/CAPITests.cpp b/libminifi/test/capi/CAPITests.cpp
index d07b75b..1739e1b 100644
--- a/libminifi/test/capi/CAPITests.cpp
+++ b/libminifi/test/capi/CAPITests.cpp
@@ -24,7 +24,6 @@
#include <set>
#include <fstream>
-
#include "utils/file/FileUtils.h"
#include "../TestBase.h"
@@ -33,8 +32,14 @@
#include <chrono>
#include <thread>
+static nifi_instance *create_instance_obj(const char *name = "random_instance") {
+ nifi_port port;
+ port.port_id = "12345";
+ return create_instance("random_instance", &port);
+}
+
TEST_CASE("Test Creation of instance, one processor", "[createInstanceAndFlow]") {
- nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+ auto instance = create_instance_obj();
REQUIRE(instance != nullptr);
flow *test_flow = create_flow(instance, nullptr);
REQUIRE(test_flow != nullptr);
@@ -45,7 +50,7 @@ TEST_CASE("Test Creation of instance, one processor", "[createInstanceAndFlow]")
}
TEST_CASE("Invalid processor returns null", "[addInvalidProcessor]") {
- nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+ auto instance = create_instance_obj();
REQUIRE(instance != nullptr);
flow *test_flow = create_flow(instance, nullptr);
processor *test_proc = add_processor(test_flow, "NeverExisted");
@@ -57,7 +62,7 @@ TEST_CASE("Invalid processor returns null", "[addInvalidProcessor]") {
}
TEST_CASE("Set valid and invalid properties", "[setProcesssorProperties]") {
- nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+ auto instance = create_instance_obj();
REQUIRE(instance != nullptr);
flow *test_flow = create_flow(instance, nullptr);
REQUIRE(test_flow != nullptr);
@@ -82,8 +87,7 @@ TEST_CASE("get file and put file", "[getAndPutFile]") {
const char *sourcedir = testController.createTempDirectory(src_format);
const char *putfiledir = testController.createTempDirectory(put_format);
std::string test_file_content = "C API raNdOMcaSe test d4t4 th1s is!";
-
- nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+ auto instance = create_instance_obj();
REQUIRE(instance != nullptr);
flow *test_flow = create_flow(instance, nullptr);
REQUIRE(test_flow != nullptr);
@@ -135,8 +139,7 @@ TEST_CASE("Test manipulation of attributes", "[testAttributes]") {
file.open(ss.str(), std::ios::out);
file << test_file_content;
file.close();
-
- nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+ auto instance = create_instance_obj();
REQUIRE(instance != nullptr);
flow *test_flow = create_flow(instance, nullptr);
REQUIRE(test_flow != nullptr);
@@ -144,14 +147,13 @@ TEST_CASE("Test manipulation of attributes", "[testAttributes]") {
processor *get_proc = add_processor(test_flow, "GetFile");
REQUIRE(get_proc != nullptr);
REQUIRE(set_property(get_proc, "Input Directory", sourcedir) == 0);
- processor *extract_test = add_processor_with_linkage(test_flow, "ExtractText");
+ processor *extract_test = add_processor_with_linkage(test_flow, "ExtractText");
REQUIRE(extract_test != nullptr);
REQUIRE(set_property(extract_test, "Attribute", "TestAttr") == 0);
- // TODO(aboda): enable this after decision made in MINIFICPP-640
/*processor *update_attribute = add_processor_with_linkage(test_flow, "UpdateAttribute");
- REQUIRE(update_attribute != nullptr);
+ REQUIRE(update_attribute != nullptr);
- REQUIRE(set_property(update_attribute, "TestAttribute", "TestValue") == 0);*/
+ REQUIRE(set_property(update_attribute, "TestAttribute", "TestValue") == 0);*/
flow_file_record *record = get_next_flow_file(instance, test_flow);
@@ -171,17 +173,17 @@ TEST_CASE("Test manipulation of attributes", "[testAttributes]") {
const char * new_testattr_value = "S0me t3st t3xt";
// Attribute already exist, should fail
- REQUIRE(add_attribute(record, test_attr.key, (void*)new_testattr_value, strlen(new_testattr_value)) != 0); // NOLINT
+ REQUIRE(add_attribute(record, test_attr.key, (void* )new_testattr_value, strlen(new_testattr_value)) != 0); // NOLINT
// Update overwrites values
- update_attribute(record, test_attr.key, (void*)new_testattr_value, strlen(new_testattr_value)); // NOLINT
+ update_attribute(record, test_attr.key, (void*) new_testattr_value, strlen(new_testattr_value)); // NOLINT
int attr_size = get_attribute_qty(record);
REQUIRE(attr_size > 0);
attribute_set attr_set;
attr_set.size = attr_size;
- attr_set.attributes = (attribute*)malloc(attr_set.size * sizeof(attribute)); // NOLINT
+ attr_set.attributes = (attribute*) malloc(attr_set.size * sizeof(attribute)); // NOLINT
REQUIRE(get_all_attributes(record, &attr_set) == attr_set.size);
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e258f54/python/minifi/__init__.py
----------------------------------------------------------------------
diff --git a/python/minifi/__init__.py b/python/minifi/__init__.py
index 01fb705..7352eb7 100644
--- a/python/minifi/__init__.py
+++ b/python/minifi/__init__.py
@@ -66,9 +66,9 @@ class PyProcessor(object):
def get(self, session):
ff = self._minifi.get(self._instance.get_instance(),self._flow, session)
if ff:
- return FlowFile(self._minifi, ff)
+ return FlowFile(self._minifi, ff)
else:
- return None
+ return None
def transfer(self, session, ff, rel):
self._minifi.transfer(session, self._flow, rel.encode("UTF-8"))
@@ -119,12 +119,6 @@ class MiNiFi(object):
""" create instance """
self._minifi.create_instance.argtypes = [ctypes.c_char_p , ctypes.POINTER(RPG_PORT)]
self._minifi.create_instance.restype = ctypes.POINTER(NIFI_STRUCT)
- """ create port """
- self._minifi.create_port.argtype = ctypes.c_char_p
- self._minifi.create_port.restype = ctypes.POINTER(RPG_PORT)
- """ free port """
- self._minifi.free_port.argtype = ctypes.POINTER(RPG_PORT)
- self._minifi.free_port.restype = ctypes.c_int
""" create new flow """
self._minifi.create_new_flow.argtype = ctypes.POINTER(NIFI_STRUCT)
self._minifi.create_new_flow.restype = ctypes.POINTER(CFlow)
@@ -167,7 +161,7 @@ class MiNiFi(object):
def __open_rpg(self, url, port):
- rpgPort = self._minifi.create_port(port)
+ rpgPort = (RPG_PORT)(port)
rpg = self._minifi.create_instance(url, rpgPort)
ret = RPG(rpg)
return ret