mirror of
https://github.com/logos-messaging/nim-sds.git
synced 2026-01-07 16:43:07 +00:00
improved alloc-dealloc structure
This commit is contained in:
parent
f70532403a
commit
fe41628527
@ -226,18 +226,11 @@ proc WrapOutgoingMessage(
|
|||||||
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
|
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
|
||||||
return RET_ERR
|
return RET_ERR
|
||||||
|
|
||||||
var msg = allocSharedSeqFromCArray(cast[ptr byte](message), messageLen.int)
|
|
||||||
let msgId = messageId.alloc()
|
|
||||||
|
|
||||||
defer:
|
|
||||||
deallocSharedSeq(msg)
|
|
||||||
deallocShared(msgId)
|
|
||||||
|
|
||||||
handleRequest(
|
handleRequest(
|
||||||
ctx,
|
ctx,
|
||||||
RequestType.MESSAGE,
|
RequestType.MESSAGE,
|
||||||
SdsMessageRequest.createShared(
|
SdsMessageRequest.createShared(
|
||||||
SdsMessageMsgType.WRAP_MESSAGE, msg, messageLen, msgId
|
SdsMessageMsgType.WRAP_MESSAGE, message, messageLen, messageId
|
||||||
),
|
),
|
||||||
callback,
|
callback,
|
||||||
userData,
|
userData,
|
||||||
@ -258,15 +251,12 @@ proc UnwrapReceivedMessage(
|
|||||||
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
|
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
|
||||||
return RET_ERR
|
return RET_ERR
|
||||||
|
|
||||||
var msg = allocSharedSeqFromCArray(cast[ptr byte](message), messageLen.int)
|
|
||||||
|
|
||||||
defer:
|
|
||||||
deallocSharedSeq(msg)
|
|
||||||
|
|
||||||
handleRequest(
|
handleRequest(
|
||||||
ctx,
|
ctx,
|
||||||
RequestType.MESSAGE,
|
RequestType.MESSAGE,
|
||||||
SdsMessageRequest.createShared(SdsMessageMsgType.UNWRAP_MESSAGE, msg, messageLen),
|
SdsMessageRequest.createShared(
|
||||||
|
SdsMessageMsgType.UNWRAP_MESSAGE, message, messageLen
|
||||||
|
),
|
||||||
callback,
|
callback,
|
||||||
userData,
|
userData,
|
||||||
)
|
)
|
||||||
@ -286,11 +276,6 @@ proc MarkDependenciesMet(
|
|||||||
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
|
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
|
||||||
return RET_ERR
|
return RET_ERR
|
||||||
|
|
||||||
var messageIds = allocSharedSeqFromCArray(cast[ptr cstring](messageIds), count.int)
|
|
||||||
|
|
||||||
defer:
|
|
||||||
deallocSharedSeq(messageIds)
|
|
||||||
|
|
||||||
handleRequest(
|
handleRequest(
|
||||||
ctx,
|
ctx,
|
||||||
RequestType.DEPENDENCIES,
|
RequestType.DEPENDENCIES,
|
||||||
|
|||||||
@ -15,18 +15,17 @@ type SdsDependenciesRequest* = object
|
|||||||
proc createShared*(
|
proc createShared*(
|
||||||
T: type SdsDependenciesRequest,
|
T: type SdsDependenciesRequest,
|
||||||
op: SdsDependenciesMsgType,
|
op: SdsDependenciesMsgType,
|
||||||
messageIds: SharedSeq[cstring],
|
messageIds: pointer,
|
||||||
count: csize_t = 0,
|
count: csize_t = 0,
|
||||||
): ptr type T =
|
): ptr type T =
|
||||||
var ret = createShared(T)
|
var ret = createShared(T)
|
||||||
ret[].operation = op
|
ret[].operation = op
|
||||||
ret[].messageIds = messageIds # check if alloc is needed
|
|
||||||
ret[].count = count
|
ret[].count = count
|
||||||
|
ret[].messageIds = allocSharedSeqFromCArray(cast[ptr cstring](messageIds), count.int)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
proc destroyShared(self: ptr SdsDependenciesRequest) =
|
proc destroyShared(self: ptr SdsDependenciesRequest) =
|
||||||
#deallocShared(self[].message)
|
deallocSharedSeq(self[].messageIds)
|
||||||
#deallocShared(self[].messageId)
|
|
||||||
deallocShared(self)
|
deallocShared(self)
|
||||||
|
|
||||||
proc process*(
|
proc process*(
|
||||||
|
|||||||
@ -21,20 +21,21 @@ type SdsUnwrapResponse* = object
|
|||||||
proc createShared*(
|
proc createShared*(
|
||||||
T: type SdsMessageRequest,
|
T: type SdsMessageRequest,
|
||||||
op: SdsMessageMsgType,
|
op: SdsMessageMsgType,
|
||||||
message: SharedSeq[byte],
|
message: pointer,
|
||||||
messageLen: csize_t = 0,
|
messageLen: csize_t = 0,
|
||||||
messageId: cstring = "",
|
messageId: cstring = "",
|
||||||
): ptr type T =
|
): ptr type T =
|
||||||
var ret = createShared(T)
|
var ret = createShared(T)
|
||||||
ret[].operation = op
|
ret[].operation = op
|
||||||
ret[].message = message # check if alloc is needed
|
|
||||||
ret[].messageLen = messageLen
|
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
|
return ret
|
||||||
|
|
||||||
proc destroyShared(self: ptr SdsMessageRequest) =
|
proc destroyShared(self: ptr SdsMessageRequest) =
|
||||||
#deallocShared(self[].message)
|
deallocSharedSeq(self[].message)
|
||||||
#deallocShared(self[].messageId)
|
deallocShared(self[].messageId)
|
||||||
deallocShared(self)
|
deallocShared(self)
|
||||||
|
|
||||||
proc process*(
|
proc process*(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user