Remove native method memmove (#9)

diff --git a/src/main/java/org/apache/rocketmq/graalvm/CInterface.java b/src/main/java/org/apache/rocketmq/graalvm/CInterface.java
index cfef42d..13d1a18 100644
--- a/src/main/java/org/apache/rocketmq/graalvm/CInterface.java
+++ b/src/main/java/org/apache/rocketmq/graalvm/CInterface.java
@@ -522,63 +522,47 @@
     @CEntryPoint(name = "send_message")
     public static void send_message(IsolateThread thread, int producerId, CMessage cMsg, CSendResult sendResult) {
         Admin instance = instances.get(producerId);
-        CTypeConversion.CCharPointerHolder pin = null;
-        try {
-            if (instance instanceof Producer) {
-                try {
-                    Message msg = message_transformer(cMsg);
-                    SendResult result = ((Producer) instance).send(msg);
-                    sendResult.setErrorCode(0);
-                    //sendResult.setError(CTypeConversion.toCString(null).get());
-                    //sendResult.setMessageId(CTypeConversion.toCString(result.getMessageId()).get());
-                    pin = CTypeConversion.toCString(result.getMessageId());
-                    int len = Math.min(ONS_SEND_RESULT_MSG_ID_LEN, result.getMessageId().length());
-                    memmove(sendResult.getMessageId(), pin.get(), WordFactory.unsigned(len));
-                } catch (ONSClientException e) {
-                    sendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
-                    pin = CTypeConversion.toCString(e.getMessage());
-                    memmove(sendResult.getError(), pin.get(),
-                        WordFactory.unsigned(Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length())));
-                }
-            } else {
-                sendResult.setErrorCode(ErrorCode.BAD_PRODUCER_INDEX.getCode());
-                pin = CTypeConversion.toCString(ErrorCode.BAD_PRODUCER_INDEX.getDesc());
-                int length = Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, ErrorCode.BAD_PRODUCER_INDEX.getDesc().length());
-                memmove(sendResult.getError(), pin.get(), WordFactory.unsigned(length));
+
+        if (instance instanceof Producer) {
+            try {
+                Message msg = message_transformer(cMsg);
+                SendResult result = ((Producer) instance).send(msg);
+                sendResult.setErrorCode(0);
+                int len = Math.min(ONS_SEND_RESULT_MSG_ID_LEN, result.getMessageId().length());
+                CTypeConversion.toCString(result.getMessageId(), sendResult.getMessageId(), WordFactory.unsigned(len));
+            } catch (ONSClientException e) {
+                sendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
+                CTypeConversion.toCString(e.getMessage(), sendResult.getError(),
+                    WordFactory.unsigned(Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length())));
             }
-        } finally {
-            if (null != pin) {
-                pin.close();
-            }
+        } else {
+            sendResult.setErrorCode(ErrorCode.BAD_PRODUCER_INDEX.getCode());
+            int length = Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, ErrorCode.BAD_PRODUCER_INDEX.getDesc().length());
+            CTypeConversion.toCString(ErrorCode.BAD_PRODUCER_INDEX.getDesc(), sendResult.getError(), WordFactory.unsigned(length));
         }
+
     }
 
     @CEntryPoint(name = "send_message_oneway")
     public static void send_message_oneway(IsolateThread thread, int producerId, CMessage cMsg,
         CSendResult sendResult) {
         Admin instance = instances.get(producerId);
-        CTypeConversion.CCharPointerHolder pin = null;
-        try {
-            if (instance instanceof Producer) {
-                Message message = message_transformer(cMsg);
-                try {
-                    ((Producer) instance).sendOneway(message);
-                } catch (ONSClientException e) {
-                    sendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
-                    pin = CTypeConversion.toCString(e.getMessage());
-                    int len = Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length());
-                    memmove(sendResult.getError(), pin.get(), WordFactory.unsigned(len));
-                }
-            }
-        } finally {
-            if (null != pin) {
-                pin.close();
+
+        if (instance instanceof Producer) {
+            Message message = message_transformer(cMsg);
+            try {
+                ((Producer) instance).sendOneway(message);
+            } catch (ONSClientException e) {
+                sendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
+                int len = Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length());
+                CTypeConversion.toCString(e.getMessage(), sendResult.getError(), WordFactory.unsigned(len));
             }
         }
+
     }
 
-    @CFunction
-    protected static native PointerBase memmove(PointerBase dest, PointerBase src, UnsignedWord n);
+    // @CFunction
+    //protected static native PointerBase memmove(PointerBase dest, PointerBase src, UnsignedWord n);
 
     @CEntryPoint(name = "send_message_async")
     public static void send_message_async(final IsolateThread thread, int producerId, final CMessage cMessage,
@@ -592,18 +576,12 @@
             mcb.exceptionFunctionPtr = cCallbackFunc.getExceptionFunction();
             mcb.successFunctionPtr = cCallbackFunc.getSuccessFunction();
             mcb.message = cMessage.getBody();
-            CTypeConversion.CCharPointerHolder pin = null;
             try {
                 ((Producer) instance).sendAsync(message, mcb);
             } catch (ONSClientException e) {
                 cSendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
-                pin = CTypeConversion.toCString(e.getMessage());
-                memmove(cSendResult.getError(), pin.get(),
+                CTypeConversion.toCString(e.getMessage(), cSendResult.getError(),
                     WordFactory.unsigned(Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length())));
-            } finally {
-                if (null != pin) {
-                    pin.close();
-                }
             }
         }
     }
@@ -612,70 +590,54 @@
     public static void send_message_transaction(final IsolateThread thread, int producerId, final CMessage cMessage,
         final CSendResult sendResult, VoidPointer executor, TransactionExecuteFunctionPointer execute) {
         Admin instance = instances.get(producerId);
-        CTypeConversion.CCharPointerHolder pin = null;
-        try {
-            if (instance instanceof TransactionProducer) {
-                try {
-                    Message message = message_transformer(cMessage);
-                    GraalTransactionExecutor transactionExecutor = new GraalTransactionExecutor();
-                    transactionExecutor.opaque = executor;
-                    transactionExecutor.transactionExecute = execute;
-                    SendResult result = ((TransactionProducer) instance).send(message, transactionExecutor, null);
-                    sendResult.setErrorCode(0);
-                    pin = CTypeConversion.toCString(result.getMessageId());
-                    int len = Math.min(ONS_SEND_RESULT_MSG_ID_LEN, result.getMessageId().length());
-                    memmove(sendResult.getMessageId(), pin.get(), WordFactory.unsigned(len));
-                } catch (Exception e) {
-                    sendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
-                    pin = CTypeConversion.toCString(e.getMessage());
-                    memmove(sendResult.getError(), pin.get(),
-                        WordFactory.unsigned(Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length())));
-                }
-            } else {
-                sendResult.setErrorCode(ErrorCode.BAD_PRODUCER_INDEX.getCode());
-                sendResult.setError(CTypeConversion.toCString(ErrorCode.BAD_PRODUCER_INDEX.getDesc()).get());
-                pin = CTypeConversion.toCString(ErrorCode.BAD_PRODUCER_INDEX.getDesc());
-                int len = Math.min(ONS_SEND_RESULT_MSG_ID_LEN, ErrorCode.BAD_PRODUCER_INDEX.getDesc().length());
-                memmove(sendResult.getError(), pin.get(), WordFactory.unsigned(len));
+
+        if (instance instanceof TransactionProducer) {
+            try {
+                Message message = message_transformer(cMessage);
+                GraalTransactionExecutor transactionExecutor = new GraalTransactionExecutor();
+                transactionExecutor.opaque = executor;
+                transactionExecutor.transactionExecute = execute;
+                SendResult result = ((TransactionProducer) instance).send(message, transactionExecutor, null);
+                sendResult.setErrorCode(0);
+                int len = Math.min(ONS_SEND_RESULT_MSG_ID_LEN, result.getMessageId().length());
+                CTypeConversion.toCString(result.getMessageId(), sendResult.getMessageId(), WordFactory.unsigned(len));
+            } catch (Exception e) {
+                sendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
+                CTypeConversion.toCString(e.getMessage(), sendResult.getError(),
+                    WordFactory.unsigned(Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length())));
             }
-        } finally {
-            if (null != pin) {
-                pin.close();
-            }
+        } else {
+            sendResult.setErrorCode(ErrorCode.BAD_PRODUCER_INDEX.getCode());
+            sendResult.setError(CTypeConversion.toCString(ErrorCode.BAD_PRODUCER_INDEX.getDesc()).get());
+            int len = Math.min(ONS_SEND_RESULT_MSG_ID_LEN, ErrorCode.BAD_PRODUCER_INDEX.getDesc().length());
+            CTypeConversion.toCString(ErrorCode.BAD_PRODUCER_INDEX.getDesc(), sendResult.getError(), WordFactory.unsigned(len));
         }
+
     }
 
     @CEntryPoint(name = "send_order_message")
     public static void send_order_message(IsolateThread thread, int producerId, CMessage cMsg, CSendResult sendResult,
         CCharPointer shardingKey) {
         Admin instance = instances.get(producerId);
-        CTypeConversion.CCharPointerHolder pin = null;
-        try {
-            if (instance instanceof OrderProducer) {
-                Message msg = message_transformer(cMsg);
-                try {
-                    SendResult result = ((OrderProducer) instance).send(msg, CTypeConversion.toJavaString(shardingKey));
-                    sendResult.setErrorCode(0);
-                    pin = CTypeConversion.toCString(result.getMessageId());
-                    memmove(sendResult.getMessageId(), pin.get(),
-                        WordFactory.unsigned(Math.min(ONS_SEND_RESULT_MSG_ID_LEN, result.getMessageId().length())));
-                } catch (ONSClientException e) {
-                    sendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
-                    pin = CTypeConversion.toCString(e.getMessage());
-                    memmove(sendResult.getError(), pin.get(),
-                        WordFactory.unsigned(Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length())));
-                }
-            } else {
-                sendResult.setErrorCode(ErrorCode.BAD_PRODUCER_INDEX.getCode());
-                int length = Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, ErrorCode.BAD_PRODUCER_INDEX.getDesc().length());
-                pin = CTypeConversion.toCString(ErrorCode.BAD_PRODUCER_INDEX.getDesc());
-                memmove(sendResult.getError(), pin.get(), WordFactory.unsigned(length));
+
+        if (instance instanceof OrderProducer) {
+            Message msg = message_transformer(cMsg);
+            try {
+                SendResult result = ((OrderProducer) instance).send(msg, CTypeConversion.toJavaString(shardingKey));
+                sendResult.setErrorCode(0);
+                CTypeConversion.toCString(result.getMessageId(), sendResult.getMessageId(),
+                    WordFactory.unsigned(Math.min(ONS_SEND_RESULT_MSG_ID_LEN, result.getMessageId().length())));
+            } catch (ONSClientException e) {
+                sendResult.setErrorCode(ErrorCode.SEND_MESSAGE_FAILURE.getCode());
+                CTypeConversion.toCString(e.getMessage(), sendResult.getError(),
+                    WordFactory.unsigned(Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, e.getMessage().length())));
             }
-        } finally {
-            if (null != pin) {
-                pin.close();
-            }
+        } else {
+            sendResult.setErrorCode(ErrorCode.BAD_PRODUCER_INDEX.getCode());
+            int length = Math.min(ONS_SEND_RESULT_ERR_MSG_LEN, ErrorCode.BAD_PRODUCER_INDEX.getDesc().length());
+            CTypeConversion.toCString(ErrorCode.BAD_PRODUCER_INDEX.getDesc(), sendResult.getError(), WordFactory.unsigned(length));
         }
+
     }
 
     private static Message message_transformer(CMessage cMsg) {