This commit is contained in:
@@ -21,33 +21,36 @@ const defaultPostTimeout = 200
|
||||
// It creates and stores the user message, serialises the packed form to
|
||||
// storagePath/outbox/{dbFile}_{dbId}, and enqueues a SendJob in
|
||||
// storagePath/queues/{peerUid}.
|
||||
func CreateUserMessageAndSendJob(storagePath, message, peerUid, replyToUid string, filelist []string, servers []client.Server, timeout int) error {
|
||||
packedMsg, dbFile, dbId, errTxt, err := CreateAndStoreUserMessage(message, peerUid, replyToUid, filelist)
|
||||
func CreateUserMessageAndSendJob(storagePath, message, peerUid, replyToUid string, filelist []string, servers []client.Server, timeout int) (string, error) {
|
||||
packedMsg, dbFile, dbId, msgUuid, errTxt, err := CreateAndStoreUserMessage(message, peerUid, replyToUid, filelist)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s: %w", errTxt, err)
|
||||
return "", fmt.Errorf("%s: %w", errTxt, err)
|
||||
}
|
||||
|
||||
data, err := proto.Marshal(packedMsg)
|
||||
if err != nil {
|
||||
return fmt.Errorf("CreateUserMessageAndSendJob: proto.Marshal: %w", err)
|
||||
return "", fmt.Errorf("CreateUserMessageAndSendJob: proto.Marshal: %w", err)
|
||||
}
|
||||
|
||||
outboxDir := filepath.Join(storagePath, "outbox")
|
||||
if err := os.MkdirAll(outboxDir, 0700); err != nil {
|
||||
return fmt.Errorf("CreateUserMessageAndSendJob: MkdirAll: %w", err)
|
||||
return "", fmt.Errorf("CreateUserMessageAndSendJob: MkdirAll: %w", err)
|
||||
}
|
||||
|
||||
outboxFile := filepath.Join(outboxDir, fmt.Sprintf("%s_%d", dbFile, dbId))
|
||||
if err := os.WriteFile(outboxFile, data, 0600); err != nil {
|
||||
return fmt.Errorf("CreateUserMessageAndSendJob: WriteFile: %w", err)
|
||||
return "", fmt.Errorf("CreateUserMessageAndSendJob: WriteFile: %w", err)
|
||||
}
|
||||
|
||||
return client.PushSendJob(storagePath, &client.SendJob{
|
||||
if err := client.PushSendJob(storagePath, &client.SendJob{
|
||||
Queue: peerUid,
|
||||
File: outboxFile,
|
||||
Servers: servers,
|
||||
Timeout: timeout,
|
||||
})
|
||||
}); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return msgUuid, nil
|
||||
}
|
||||
|
||||
// ProcessSendQueues discovers every queue DB file under storagePath/queues/
|
||||
|
||||
Reference in New Issue
Block a user