diff --git a/library/libsds.nim b/library/libsds.nim index 895a960..6763e9d 100644 --- a/library/libsds.nim +++ b/library/libsds.nim @@ -226,18 +226,11 @@ proc WrapOutgoingMessage( callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData) return RET_ERR - var msg = allocSharedSeqFromCArray(cast[ptr byte](message), messageLen.int) - let msgId = messageId.alloc() - - defer: - deallocSharedSeq(msg) - deallocShared(msgId) - handleRequest( ctx, RequestType.MESSAGE, SdsMessageRequest.createShared( - SdsMessageMsgType.WRAP_MESSAGE, msg, messageLen, msgId + SdsMessageMsgType.WRAP_MESSAGE, message, messageLen, messageId ), callback, userData, @@ -258,15 +251,12 @@ proc UnwrapReceivedMessage( callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData) return RET_ERR - var msg = allocSharedSeqFromCArray(cast[ptr byte](message), messageLen.int) - - defer: - deallocSharedSeq(msg) - handleRequest( ctx, RequestType.MESSAGE, - SdsMessageRequest.createShared(SdsMessageMsgType.UNWRAP_MESSAGE, msg, messageLen), + SdsMessageRequest.createShared( + SdsMessageMsgType.UNWRAP_MESSAGE, message, messageLen + ), callback, userData, ) @@ -286,11 +276,6 @@ proc MarkDependenciesMet( callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData) return RET_ERR - var messageIds = allocSharedSeqFromCArray(cast[ptr cstring](messageIds), count.int) - - defer: - deallocSharedSeq(messageIds) - handleRequest( ctx, RequestType.DEPENDENCIES, diff --git a/library/sds_thread/inter_thread_communication/requests/sds_dependencies_request.nim b/library/sds_thread/inter_thread_communication/requests/sds_dependencies_request.nim index 7c45087..ebb45c2 100644 --- a/library/sds_thread/inter_thread_communication/requests/sds_dependencies_request.nim +++ b/library/sds_thread/inter_thread_communication/requests/sds_dependencies_request.nim @@ -15,18 +15,17 @@ type SdsDependenciesRequest* = object proc createShared*( T: type SdsDependenciesRequest, op: SdsDependenciesMsgType, - messageIds: SharedSeq[cstring], + messageIds: pointer, count: csize_t = 0, ): ptr type T = var ret = createShared(T) ret[].operation = op - ret[].messageIds = messageIds # check if alloc is needed ret[].count = count + ret[].messageIds = allocSharedSeqFromCArray(cast[ptr cstring](messageIds), count.int) return ret proc destroyShared(self: ptr SdsDependenciesRequest) = - #deallocShared(self[].message) - #deallocShared(self[].messageId) + deallocSharedSeq(self[].messageIds) deallocShared(self) proc process*( diff --git a/library/sds_thread/inter_thread_communication/requests/sds_message_request.nim b/library/sds_thread/inter_thread_communication/requests/sds_message_request.nim index 77ec25f..6917ccf 100644 --- a/library/sds_thread/inter_thread_communication/requests/sds_message_request.nim +++ b/library/sds_thread/inter_thread_communication/requests/sds_message_request.nim @@ -21,20 +21,21 @@ type SdsUnwrapResponse* = object proc createShared*( T: type SdsMessageRequest, op: SdsMessageMsgType, - message: SharedSeq[byte], + message: pointer, messageLen: csize_t = 0, messageId: cstring = "", ): ptr type T = var ret = createShared(T) ret[].operation = op - ret[].message = message # check if alloc is needed ret[].messageLen = messageLen - ret[].messageId = messageId # check if alloc is needed + ret[].messageId = messageId.alloc() + ret[].message = allocSharedSeqFromCArray(cast[ptr byte](message), messageLen.int) + return ret proc destroyShared(self: ptr SdsMessageRequest) = - #deallocShared(self[].message) - #deallocShared(self[].messageId) + deallocSharedSeq(self[].message) + deallocShared(self[].messageId) deallocShared(self) proc process*(