49 lines
2.1 KiB
Plaintext
49 lines
2.1 KiB
Plaintext
@startuml NormFileSend
|
|
Client -> NormInstance : new()
|
|
NormInstance -> NormInstance : CreateInstance(false)
|
|
NormInstance -> NormApi : NormCreateInstance(false)
|
|
NormInstance <- NormApi : instanceHandle
|
|
Client <- NormInstance : NormInstance
|
|
Client -> NormInstance : CreateSession(address, port, localNodeId)
|
|
NormInstance -> NormApi : NormCreateSession(instanceHandle, address, port, localNodeId)
|
|
NormInstance <- NormApi : sessionHandle
|
|
alt sessionHandle == NormApi.NORM_SESSION_INVALID
|
|
NormInstance -> IOException : throw new("Failed to create session")
|
|
end
|
|
NormInstance -> NormSession : new(sessionHandle)
|
|
NormInstance <- NormSession : NormSession
|
|
Client <- NormInstance : NormSession
|
|
Client -> NormSession : StartSender(sessionId, bufferSpace, segmentSize, blockSize, numParity, fecId)
|
|
NormSession -> NormApi : NormStartSender(sessionHandle, sessionId, bufferSpace, segmentSize, blockSize, numParity, fecId)
|
|
NormSession <- NormApi : success
|
|
alt success == false
|
|
NormSession -> IOException : throw new("Failed to start sender")
|
|
end
|
|
Client -> NormSession : FileEnqueue(filename)
|
|
NormSession -> ASCII : GetBytes(filename)
|
|
NormSession <- ASCII : info
|
|
NormSession -> NormApi : NormFileEnqueue(sessionHandle, filename, info, info.Length)
|
|
NormSession <- NormApi : objectHandle
|
|
alt objectHandle == NormApi.NORM_OBJECT_INVALID
|
|
NormSession -> IOException : throw new("Failed to enqueue file")
|
|
end
|
|
NormSession -> NormFile: new(objectHandle)
|
|
NormSession <- NormFile : NormFile
|
|
Client <- NormSession : NormFile
|
|
loop NormInstance.HasNextEvent(waitTime)
|
|
Client -> NormInstance : GetNextEvent(false)
|
|
NormInstance -> NormApi : NormGetNextEvent(instanceHandle, NormEvent, false)
|
|
NormInstance <- NormApi : success
|
|
alt success == false
|
|
Client <- NormInstance : null
|
|
end
|
|
Client <- NormInstance : NormEvent
|
|
end
|
|
Client -> NormSession : StopSender();
|
|
NormSession -> NormApi : NormStopSender(sessionHandle)
|
|
Client -> NormSession : DestroySession()
|
|
NormSession -> NormSession : DestroySessionNative()
|
|
NormSession -> NormApi : NormDestroySession(sessionHandle)
|
|
Client -> NormInstance : DestroyInstance()
|
|
NormInstance -> NormApi : NormDestroyInstance(instanceHandle)
|
|
@enduml |