Browse Source

Merge pull request #260 from hfaham/master

Matlab Mex Macros and Memory Presistence for the client
Sten Grüner 9 years ago
parent
commit
fdef7c6a21
2 changed files with 19 additions and 0 deletions
  1. 11 0
      src/client/ua_client.c
  2. 8 0
      src/ua_util.h

+ 11 - 0
src/client/ua_client.c

@@ -466,6 +466,17 @@ UA_StatusCode UA_Client_connect(UA_Client *client, UA_ConnectClientConnection co
         retval = SessionHandshake(client);
     if(retval == UA_STATUSCODE_GOOD)
         retval = ActivateSession(client);
+        
+    #ifdef MATLAB_MEX_FILE
+	if(retval == UA_STATUSCODE_GOOD){
+	    mexMakeMemoryPersistent(client);    
+	    mexMakeMemoryPersistent(&client->connection);
+	    mexMakeMemoryPersistent(client->endpointUrl.data);
+	    mexMakeMemoryPersistent(client->clientNonce.data);
+	    mexMakeMemoryPersistent(client->serverNonce.data);
+	}
+    #endif
+        
     return retval;
 }
 

+ 8 - 0
src/ua_util.h

@@ -49,10 +49,18 @@
 #define UA_assert(ignore) assert(ignore)
 
 /* Replace the macros with functions for custom allocators if necessary */
+#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */
+#define UA_free(ptr) mxFree(ptr)
+#define UA_malloc(size) mxMalloc(size)
+#define UA_calloc(num, size) mxCalloc(num, size)
+#define UA_realloc(ptr, size) mxRealloc(ptr, size)
+#else
 #define UA_free(ptr) free(ptr)
 #define UA_malloc(size) malloc(size)
 #define UA_calloc(num, size) calloc(num, size)
 #define UA_realloc(ptr, size) realloc(ptr, size)
+#endif
+
 #define UA_memcpy(dst, src, size) memcpy(dst, src, size)
 #define UA_memset(ptr, value, size) memset(ptr, value, size)