Skip to content

Commit

Permalink
NormDataEnqueue Refactor (#34)
Browse files Browse the repository at this point in the history
* Updated to use SafeBuffer

* Added ByteBuffer and DirectByteBuffer

* Added pointer overload to DataEnqueue

* Updated FileEnqueue() to use pointer arithmetic

* Updated NormStream to use pointer arithmetic

* Updated NormSendCommand to nint

* Updated NormNodeGetCommand to nint

* Updated NormNodeGetAddress to use nint for buffer

* Updated NormStreamRead to use nint for buffer

* Updated NormObjectGetInfo to use nint for buffer

* Updated NormFileGetName nameBuffer to nint
  • Loading branch information
mullerj committed Jul 29, 2024
1 parent 0eb0b82 commit d539a35
Show file tree
Hide file tree
Showing 35 changed files with 1,214 additions and 442 deletions.
7 changes: 7 additions & 0 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/Buffers/ByteBuffer.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@startuml
abstract class ByteBuffer {
# ByteBuffer()
+ {static} AllocateDirect(capacity:int) : ByteBuffer
}
SafeBuffer <|-- ByteBuffer
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@startuml
class DirectByteBuffer <<sealed>> {
<<internal>> DirectByteBuffer(capacity:int)
# <<override>> ReleaseHandle() : bool
}
ByteBuffer <|-- DirectByteBuffer
@enduml
10 changes: 5 additions & 5 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/Enums/NormAckingStatus.puml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
@startuml
enum NormAckingStatus {
NORM_ACK_INVALID
NORM_ACK_FAILURE
NORM_ACK_PENDING
NORM_ACK_SUCCESS
NORM_ACK_INVALID,
NORM_ACK_FAILURE,
NORM_ACK_PENDING,
NORM_ACK_SUCCESS,
}
@enduml
@enduml
60 changes: 30 additions & 30 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/Enums/NormEventType.puml
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
@startuml
enum NormEventType {
NORM_EVENT_INVALID
NORM_TX_QUEUE_VACANCY
NORM_TX_QUEUE_EMPTY
NORM_TX_FLUSH_COMPLETED
NORM_TX_WATERMARK_COMPLETED
NORM_TX_CMD_SENT
NORM_TX_OBJECT_SENT
NORM_TX_OBJECT_PURGED
NORM_TX_RATE_CHANGED
NORM_LOCAL_SENDER_CLOSED
NORM_REMOTE_SENDER_NEW
NORM_REMOTE_SENDER_RESET
NORM_REMOTE_SENDER_ADDRESS
NORM_REMOTE_SENDER_ACTIVE
NORM_REMOTE_SENDER_INACTIVE
NORM_REMOTE_SENDER_PURGED
NORM_RX_CMD_NEW
NORM_RX_OBJECT_NEW
NORM_RX_OBJECT_INFO
NORM_RX_OBJECT_UPDATED
NORM_RX_OBJECT_COMPLETED
NORM_RX_OBJECT_ABORTED
NORM_RX_ACK_REQUEST
NORM_GRTT_UPDATED
NORM_CC_ACTIVE
NORM_CC_INACTIVE
NORM_ACKING_NODE_NEW
NORM_SEND_ERROR
NORM_USER_TIMEOUT
NORM_EVENT_INVALID,
NORM_TX_QUEUE_VACANCY,
NORM_TX_QUEUE_EMPTY,
NORM_TX_FLUSH_COMPLETED,
NORM_TX_WATERMARK_COMPLETED,
NORM_TX_CMD_SENT,
NORM_TX_OBJECT_SENT,
NORM_TX_OBJECT_PURGED,
NORM_TX_RATE_CHANGED,
NORM_LOCAL_SENDER_CLOSED,
NORM_REMOTE_SENDER_NEW,
NORM_REMOTE_SENDER_RESET,
NORM_REMOTE_SENDER_ADDRESS,
NORM_REMOTE_SENDER_ACTIVE,
NORM_REMOTE_SENDER_INACTIVE,
NORM_REMOTE_SENDER_PURGED,
NORM_RX_CMD_NEW,
NORM_RX_OBJECT_NEW,
NORM_RX_OBJECT_INFO,
NORM_RX_OBJECT_UPDATED,
NORM_RX_OBJECT_COMPLETED,
NORM_RX_OBJECT_ABORTED,
NORM_RX_ACK_REQUEST,
NORM_GRTT_UPDATED,
NORM_CC_ACTIVE,
NORM_CC_INACTIVE,
NORM_ACKING_NODE_NEW,
NORM_SEND_ERROR,
NORM_USER_TIMEOUT,
}
@enduml
@enduml
8 changes: 4 additions & 4 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/Enums/NormFecType.puml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@startuml
enum NormFecType {
RS
RS8
SB
RS,
RS8,
SB,
}
@enduml
@enduml
8 changes: 4 additions & 4 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/Enums/NormFlushMode.puml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@startuml
enum NormFlushMode {
NORM_FLUSH_NONE
NORM_FLUSH_PASSIVE
NORM_FLUSH_ACTIVE
NORM_FLUSH_NONE,
NORM_FLUSH_PASSIVE,
NORM_FLUSH_ACTIVE,
}
@enduml
@enduml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@startuml
enum NormNackingMode {
NORM_NACK_NONE
NORM_NACK_INFO_ONLY
NORM_NACK_NORMAL
NORM_NACK_NONE,
NORM_NACK_INFO_ONLY,
NORM_NACK_NORMAL,
}
@enduml
@enduml
10 changes: 5 additions & 5 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/Enums/NormObjectType.puml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
@startuml
enum NormObjectType {
NORM_OBJECT_NONE
NORM_OBJECT_DATA
NORM_OBJECT_FILE
NORM_OBJECT_STREAM
NORM_OBJECT_NONE,
NORM_OBJECT_DATA,
NORM_OBJECT_FILE,
NORM_OBJECT_STREAM,
}
@enduml
@enduml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@startuml
enum NormProbingMode {
NORM_PROBE_NONE
NORM_PROBE_PASSIVE
NORM_PROBE_ACTIVE
NORM_PROBE_NONE,
NORM_PROBE_PASSIVE,
NORM_PROBE_ACTIVE,
}
@enduml
@enduml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@startuml
enum NormRepairBoundary {
NORM_BOUNDARY_BLOCK
NORM_BOUNDARY_OBJECT
NORM_BOUNDARY_BLOCK,
NORM_BOUNDARY_OBJECT,
}
@enduml
@enduml
8 changes: 4 additions & 4 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/Enums/NormSyncPolicy.puml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@startuml
enum NormSyncPolicy {
NORM_SYNC_CURRENT
NORM_SYNC_STREAM
NORM_SYNC_ALL
NORM_SYNC_CURRENT,
NORM_SYNC_STREAM,
NORM_SYNC_ALL,
}
@enduml
@enduml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
interface INormEventListener {
NormEventOccurred(normEvent:NormEvent) : void
}
@enduml
@enduml
25 changes: 14 additions & 11 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/IO/NormInputStream.puml
Original file line number Diff line number Diff line change
@@ -1,32 +1,30 @@
@startuml
class NormInputStream {
- _normInstance : NormInstance
- _normSession : NormSession
- _normStream : NormStream
- _normEventListeners : List<INormEventListener>
- _normStream : NormStream?
- _closed : bool
- _closeLock : object
- _bufferIsEmpty : bool
- _receivedEof : bool
+ NormInputStream(address:string, port:int)
+ OpenDebugLog(filename:string) : void
+ SetDebugLevel(level:int) : void
+ OpenDebugLog(fileName:string) : void
+ CloseDebugLog() : void
+ NormSetDebugLevel(level:int) : void
+ SetMessageTrace(messageTrace:bool) : void
+ SetMulticastInterface(multicastInterface: string) : void
+ SetEcnSupport(ecnEnable:bool, ignoreLoss:bool)
+ SetMulticastInterface(multicastInterface:string) : void
+ SetEcnSupport(ecnEnable:bool, ignoreLoss:bool) : void
+ SetTtl(ttl:byte) : void
+ SetTos(tos:byte) : void
+ SetSilentReceiver(silent:bool, maxDelay:int) : void
+ setSilentReceiver(silent:bool, maxDelay:int) : void
+ SetDefaultUnicastNack(defaultUnicastNack:bool) : void
+ SeekMsgStart() : void
+ AddNormEventListener(normEventListener:INormEventListener) : void
+ RemoveNormEventListener(normEventListener:INormEventListener) : void
- FireNormEventOccured(normEvent:NormEvent) : void
+ Open(bufferSpace:long) : void
+ <<override>> Dispose() : void
+ <<override>> Close() : void
+ IsClosed : bool <<get>>
+ Read() : int
+ <<override>> Read(buffer:byte[], offset:int, length:int) : int
+ <<override>> Read(buffer:byte[], offset:int, count:int) : int
- ProcessEvent() : void
+ <<override>> Flush() : void
+ <<override>> Write(buffer:byte[], offset:int, count:int) : void
Expand All @@ -38,5 +36,10 @@ class NormInputStream {
+ <<override>> Length : long <<get>>
+ <<override>> Position : long <<get>> <<set>>
}
class "List`1"<T> {
}
Stream <|-- NormInputStream
NormInputStream --> "_normInstance" NormInstance
NormInputStream --> "_normSession" NormSession
NormInputStream --> "_normEventListeners<INormEventListener>" "List`1"
@enduml
26 changes: 14 additions & 12 deletions src/dotnet/design/Mil/Navy/Nrl/Norm/IO/NormOutputStream.puml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
@startuml
class NormOutputStream {
- _normInstance : NormInstance
- _normSession : NormSession
- _normStream : NormStream
- _normEventListeners : List<INormEventListener>
- _normStream : NormStream?
- _closed : bool
- _closeLock : object
- _bufferIsFull : bool
Expand All @@ -13,30 +10,30 @@ class NormOutputStream {
+ SetDebugLevel(level:int) : void
+ SetMessageTrace(messageTrace:bool) : void
+ SetMulticastInterface(multicastInterface:string) : void
+ SetEcnSupport(ecnEnable:bool, ignoreLoss:bool): void
+ SetEcnSupport(ecnEnable:bool, ignoreLoss:bool) : void
+ SetTtl(ttl:byte) : void
+ SetTos(tos:byte) : void
+ SetCongestionControl(ccEnabled:bool, ccAdjustRate: bool) : void
+ SetCongestionControl(ccEnabled:bool, ccAdjustRate:bool) : void
+ SetTxRateBounds(minTxRate:double, maxTxRate:double) : void
+ TxRate:double <<get>> <<set>>
+ GrttEstimate:double <<get>> <<set>>
+ TxRate : double <<get>> <<set>>
+ GrttEstimate : double <<get>> <<set>>
+ SetGroupSize(groupSize:long) : void
+ SetAutoParity(autoParity:short) : void
+ SetBackoffFactor(backoffFactor:double) : void
+ SetAutoFlush(flushMode:NormFlushMode) : void
+ SetPushEnable(pushEnable:bool) : void
+ MarkEom() : void
+ AddNormEventListener(normEventListener:INormEventListener) : void
+ RemoveNormEventListener(normEventListener:INormEventListener): void
+ RemoveNormEventListener(normEventListener:INormEventListener) : void
- FireNormEventOccured(normEvent:NormEvent) : void
+ Open(sessionId:int, bufferSpace:long, segmentSize:int, blockSize:short, numParity:short, repairWindow:long) : void
+ <<override>> Close() : void
+ IsClosed : bool <<get>>
+ Write(b:int) : void
+ <<override>> Write(buffer:byte[], offset:int, count:int)
+ <<override>> Write(buffer:byte[], offset:int, count:int) : void
- ProcessEvent() : void
+ <<override>> Flush() : void
+ <<override>> Read(buffer:byte[], offset:int, length:int) : int
+ <<override>> Read(buffer:byte[], offset:int, count:int) : int
+ <<override>> Seek(offset:long, origin:SeekOrigin) : long
+ <<override>> SetLength(value:long) : void
+ <<override>> CanRead : bool <<get>>
Expand All @@ -45,5 +42,10 @@ class NormOutputStream {
+ <<override>> Length : long <<get>>
+ <<override>> Position : long <<get>> <<set>>
}
class "List`1"<T> {
}
Stream <|-- NormOutputStream
@enduml
NormOutputStream --> "_normInstance" NormInstance
NormOutputStream --> "_normSession" NormSession
NormOutputStream --> "_normEventListeners<INormEventListener>" "List`1"
@enduml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@startuml
class StreamBreakException {
+ StreamBreakException(message:string)
+ StreamBreakException(message:string?)
}
IOException <|-- StreamBreakException
@enduml
@enduml
Loading

0 comments on commit d539a35

Please sign in to comment.