@@ -690,39 +690,26 @@ class NBuffer : public BaseBuffer<T> {
690
690
return *actual_read_buffer;
691
691
}
692
692
693
- int bufferCountFilled () {
694
- int result = 0 ;
695
- for (int j = 0 ; j < buffer_count; j++) {
696
- if (filled_buffers[j] != nullptr ) {
697
- result++;
698
- }
699
- }
700
- return result;
693
+ virtual int bufferCountFilled () {
694
+ return filled_buffers.size ();
701
695
}
702
696
703
- int bufferCountEmpty () {
704
- int result = 0 ;
705
- for (int j = 0 ; j < buffer_count; j++) {
706
- if (avaliable_buffers[j] != nullptr ) {
707
- result++;
708
- }
709
- }
710
- return result;
697
+ virtual int bufferCountEmpty () {
698
+ return available_buffers.size ();
711
699
}
712
700
713
- void resize (int size, int count) {
701
+ virtual void resize (int size, int count) {
714
702
if (buffer_size==size && buffer_count == count)
715
703
return ;
716
704
freeMemory ();
717
705
filled_buffers.resize (count);
718
- avaliable_buffers .resize (count);
706
+ available_buffers .resize (count);
719
707
720
- write_buffer_count = 0 ;
721
708
buffer_count = count;
722
709
buffer_size = size;
723
710
for (int j = 0 ; j < count; j++) {
724
- avaliable_buffers [j] = new SingleBuffer<T>(size);
725
- if (avaliable_buffers [j] == nullptr ) {
711
+ available_buffers [j] = new SingleBuffer<T>(size);
712
+ if (available_buffers [j] == nullptr ) {
726
713
LOGE (" Not Enough Memory for buffer %d" , j);
727
714
}
728
715
}
@@ -733,11 +720,10 @@ class NBuffer : public BaseBuffer<T> {
733
720
protected:
734
721
int buffer_size = 0 ;
735
722
uint16_t buffer_count = 0 ;
736
- uint16_t write_buffer_count = 0 ;
737
723
BaseBuffer<T> *actual_read_buffer = nullptr ;
738
724
BaseBuffer<T> *actual_write_buffer = nullptr ;
739
- Vector <BaseBuffer<T> *> avaliable_buffers ;
740
- Vector <BaseBuffer<T> *> filled_buffers;
725
+ QueueFromVector <BaseBuffer<T> *> available_buffers{ nullptr , 0 } ;
726
+ QueueFromVector <BaseBuffer<T> *> filled_buffers{ nullptr , 0 } ;
741
727
unsigned long start_time = 0 ;
742
728
unsigned long sample_count = 0 ;
743
729
@@ -774,50 +760,22 @@ class NBuffer : public BaseBuffer<T> {
774
760
775
761
virtual BaseBuffer<T> *getNextAvailableBuffer () {
776
762
BaseBuffer<T> *result = nullptr ;
777
- for (int j = 0 ; j < buffer_count; j++) {
778
- result = avaliable_buffers[j];
779
- if (result != nullptr ) {
780
- avaliable_buffers[j] = nullptr ;
781
- break ;
782
- }
783
- }
763
+ available_buffers.dequeue (result);
784
764
return result;
785
765
}
786
766
787
767
virtual bool addAvailableBuffer (BaseBuffer<T> *buffer) {
788
- bool result = false ;
789
- for (int j = 0 ; j < buffer_count; j++) {
790
- if (avaliable_buffers[j] == nullptr ) {
791
- avaliable_buffers[j] = buffer;
792
- result = true ;
793
- break ;
794
- }
795
- }
796
- return result;
768
+ return available_buffers.enqueue (buffer);
797
769
}
798
770
799
771
virtual BaseBuffer<T> *getNextFilledBuffer () {
800
772
BaseBuffer<T> *result = nullptr ;
801
- if (write_buffer_count > 0 ) {
802
- // get oldest entry
803
- result = filled_buffers[0 ];
804
- // move data by 1 entry to the left
805
- for (int j = 0 ; j < write_buffer_count - 1 ; j++)
806
- filled_buffers[j] = filled_buffers[j + 1 ];
807
- // clear last enty
808
- filled_buffers[write_buffer_count - 1 ] = nullptr ;
809
- write_buffer_count--;
810
- }
773
+ filled_buffers.dequeue (result);
811
774
return result;
812
775
}
813
776
814
777
virtual bool addFilledBuffer (BaseBuffer<T> *buffer) {
815
- bool result = false ;
816
- if (write_buffer_count < buffer_count) {
817
- filled_buffers[write_buffer_count++] = buffer;
818
- result = true ;
819
- }
820
- return result;
778
+ return filled_buffers.enqueue (buffer);
821
779
}
822
780
};
823
781
0 commit comments