29 #ifndef SELECTIVE_REPEAT_H
30 #define SELECTIVE_REPEAT_H
34 #if (defined(_MSC_VER) && defined(ITPP_SHARED_LIB) && !(defined(itpp_EXPORTS) || defined(itpp_debug_EXPORTS)))
36 #ifndef ITPP_PROTOCOL_EXCLUDED
37 #define ITPP_PROTOCOL_EXCLUDED
38 #pragma message( "PROTOCOL definitions are not available for MSVC shared builds" )
71 const int Buffer_size_factor,
72 const int Link_packet_size,
73 const Ttype Time_out);
101 void handle_packet_input(
Packet *P);
102 void handle_packet_output_request(
int K);
103 void handle_query_nof_ready_packets(
void*);
104 void retransmit(
int Sequence_number);
105 void remove(
const int Sequence_number);
106 void push_packet_on_tx_buffer(
Packet *packet);
107 int buffered_non_outstanding();
108 int free_sequence_numbers();
109 int sequence_number_2_buffer_index(
const int Sequence_number);
110 void schedule_output(
const int Buffer_index,
const int Sequence_number,
const bool Retransmission);
111 void cancel_output(
const int Sequence_number);
113 int feasable_blocks();
117 int input_buffer_size;
119 int input_free_space;
130 ivec retransmission_indexes;
134 int scheduled_retransmissions;
136 int link_packet_size;
166 bool greater_modulo_L(
const int a,
const int b);
182 #endif // #ifndef SELECTIVE_REPEAT_H