@@ -81,7 +81,6 @@ class CompletionDisposition(enum.Enum):
8181@dataclass
8282class _DestFileParams (_FileParamsBase ):
8383 file_name : Path
84- file_size_eof : int | None
8584
8685 @classmethod
8786 def empty (cls ) -> _DestFileParams :
@@ -91,14 +90,13 @@ def empty(cls) -> _DestFileParams:
9190 crc32 = b"" ,
9291 file_size = None ,
9392 file_name = Path (),
94- file_size_eof = None ,
93+ # file_size_eof=None,
9594 metadata_only = False ,
9695 )
9796
9897 def reset (self ) -> None :
9998 super ().reset ()
10099 self .file_name = Path ()
101- self .file_size_eof = None
102100
103101
104102class TransactionStep (enum .Enum ):
@@ -221,6 +219,8 @@ def remove_lost_segment(self, segment_to_remove: tuple[int, int]) -> bool:
221219@dataclass
222220class _AckedModeParams :
223221 lost_seg_tracker : LostSegmentTracker = field (default = LostSegmentTracker ())
222+ # Extra parameter: Missing metadata is not tracked inside the lost segment tracker, so we
223+ # need an extra parameter for this.
224224 metadata_missing : bool = False
225225 last_start_offset : int = 0
226226 last_end_offset : int = 0
@@ -596,7 +596,7 @@ def _start_transaction_missing_metadata_recv_eof(self, eof_pdu: EofPdu) -> None:
596596
597597 def _handle_eof_without_previous_metadata (self , eof_pdu : EofPdu ) -> None :
598598 self ._params .fp .progress = eof_pdu .file_size
599- self ._params .fp .file_size_eof = eof_pdu .file_size
599+ self ._params .fp .file_size = eof_pdu .file_size
600600 self ._params .acked_params .metadata_missing = True
601601 if self ._params .fp .progress > 0 :
602602 # Clear old list, deferred procedure for the whole file is now active.
@@ -829,8 +829,8 @@ def _handle_fd_pdu(self, file_data_pdu: FileDataPdu) -> None:
829829 self ._params .finished_params .file_status = FileStatus .FILE_RETAINED
830830
831831 if (
832- self ._params .fp .file_size_eof is not None
833- and (offset + len (file_data_pdu .file_data ) > self ._params .fp .file_size_eof )
832+ self ._params .fp .file_size is not None
833+ and (offset + len (file_data_pdu .file_data ) > self ._params .fp .file_size )
834834 and (
835835 self ._declare_fault (ConditionCode .FILE_SIZE_ERROR )
836836 != FaultHandlerCode .IGNORE_ERROR
@@ -892,7 +892,7 @@ def _deferred_lost_segment_handling(self) -> None:
892892 if not self ._params .acked_params .deferred_lost_segment_detection_active :
893893 return
894894 assert self ._params .remote_cfg is not None
895- assert self ._params .fp .file_size_eof is not None
895+ assert self ._params .fp .file_size is not None
896896 if (
897897 self ._params .acked_params .lost_seg_tracker .num_lost_segments == 0
898898 and not self ._params .acked_params .metadata_missing
@@ -938,7 +938,7 @@ def _deferred_lost_segment_handling(self) -> None:
938938 NakPdu (
939939 self ._params .pdu_conf ,
940940 0 ,
941- self ._params .fp .file_size_eof ,
941+ self ._params .fp .file_size ,
942942 next_segment_reqs ,
943943 )
944944 )
@@ -948,7 +948,7 @@ def _deferred_lost_segment_handling(self) -> None:
948948 NakPdu (
949949 self ._params .pdu_conf ,
950950 0 ,
951- self ._params .fp .file_size_eof ,
951+ self ._params .fp .file_size ,
952952 next_segment_reqs ,
953953 )
954954 )
@@ -959,7 +959,7 @@ def _deferred_lost_segment_handling(self) -> None:
959959 def _handle_eof_pdu (self , eof_pdu : EofPdu ) -> bool | None :
960960 """Returns whether to exit the FSM prematurely."""
961961 self ._params .fp .crc32 = eof_pdu .file_checksum
962- self ._params .fp .file_size_eof = eof_pdu .file_size
962+ self ._params .fp .file_size = eof_pdu .file_size
963963 if self .cfg .indication_cfg .eof_recv_indication_required :
964964 assert self ._params .transaction_id is not None
965965 self .user .eof_recv_indication (self ._params .transaction_id )
@@ -975,30 +975,26 @@ def _handle_eof_pdu(self, eof_pdu: EofPdu) -> bool | None:
975975 EntityIdTlv (self ._params .remote_cfg .entity_id .as_bytes ),
976976 )
977977 # Store this as progress for the checksum calculation.
978- self ._params .fp .progress = self ._params .fp .file_size_eof
978+ self ._params .fp .progress = self ._params .fp .file_size
979979 self ._params .finished_params .delivery_code = DeliveryCode .DATA_INCOMPLETE
980980 self ._file_transfer_complete_transition ()
981981 return False
982982
983983 def _handle_no_error_eof (self ) -> bool :
984984 """Returns whether the transfer can be completed regularly."""
985985 # CFDP 4.6.1.2.9: Declare file size error if progress exceeds file size
986- if self ._params .fp .progress > self ._params .fp .file_size_eof : # type: ignore
986+ if self ._params .fp .progress > self ._params .fp .file_size : # type: ignore
987987 if self ._declare_fault (ConditionCode .FILE_SIZE_ERROR ) != FaultHandlerCode .IGNORE_ERROR :
988988 return False
989989 elif (
990- self ._params .fp .progress < self ._params .fp .file_size_eof # type: ignore
990+ self ._params .fp .progress < self ._params .fp .file_size # type: ignore
991991 ) and self .transmission_mode == TransmissionMode .ACKNOWLEDGED :
992992 # CFDP 4.6.4.3.1: The end offset of the last received file segment and the file
993993 # size as stated in the EOF PDU is not the same, so we need to add that segment to
994994 # the lost segments for the deferred lost segment detection procedure.
995995 self ._params .acked_params .lost_seg_tracker .add_lost_segment (
996- (self ._params .fp .progress , self ._params .fp .file_size_eof ) # type: ignore
996+ (self ._params .fp .progress , self ._params .fp .file_size ) # type: ignore
997997 )
998- if self ._params .fp .file_size_eof != self ._params .fp .file_size :
999- # Can or should this ever happen for a No Error EOF? Treat this like a non-fatal
1000- # error for now.
1001- _LOGGER .warning ("missmatch of EOF file size and Metadata File Size for success EOF" )
1002998 if (
1003999 self .transmission_mode == TransmissionMode .UNACKNOWLEDGED
10041000 and not self ._checksum_verify ()
@@ -1019,8 +1015,8 @@ def _start_deferred_lost_segment_handling(self) -> None:
10191015 self .states .step = TransactionStep .WAITING_FOR_MISSING_DATA
10201016 self ._params .acked_params .deferred_lost_segment_detection_active = True
10211017 self ._params .acked_params .lost_seg_tracker .coalesce_lost_segments ()
1022- self ._params .acked_params .last_start_offset = self ._params .fp .file_size_eof # type: ignore
1023- self ._params .acked_params .last_end_offset = self ._params .fp .file_size_eof # type: ignore
1018+ self ._params .acked_params .last_start_offset = self ._params .fp .file_size # type: ignore
1019+ self ._params .acked_params .last_end_offset = self ._params .fp .file_size # type: ignore
10241020 self ._deferred_lost_segment_handling ()
10251021
10261022 def _prepare_eof_ack_packet (self ) -> None :
0 commit comments