// Path: debugoverlay/src/main/java/com/ms_square/debugoverlay/OverlayModule.java
// public abstract class OverlayModule<T> implements DataModule<T>, ViewModule<T> {
// 
//     private final DataModule<T> dataModule;
// 
//     private final ViewModule<T> viewModule;
// 
//     public OverlayModule(DataModule<T> dataModule, ViewModule<T> viewModule) {
//         this.dataModule = dataModule;
//         this.viewModule = viewModule;
//     }
// 
//     @Override
//     public void start() {
//         dataModule.addObserver(viewModule);
//         dataModule.start();
//     }
// 
//     @Override
//     public void stop() {
//         dataModule.removeObserver(viewModule);
//         dataModule.stop();
//     }
// 
//     @Override
//     public void notifyObservers() {
//         dataModule.notifyObservers();
//     }
// 
//     @Override
//     public void addObserver(@NonNull DataObserver observer) {
//         dataModule.addObserver(observer);
//     }
// 
//     @Override
//     public void removeObserver(@NonNull DataObserver observer) {
//         dataModule.removeObserver(observer);
//     }
// 
//     @Override
//     public void onDataAvailable(T data) {
//         viewModule.onDataAvailable(data);
//     }
// 
//     @Override
//     public View createView(@NonNull ViewGroup root, @ColorInt int textColor, float textSize, float textAlpha) {
//         return viewModule.createView(root, textColor, textSize, textAlpha);
//     }
// }
// 
// Path: debugoverlay/src/main/java/com/ms_square/debugoverlay/modules/SimpleViewModule.java
// public class SimpleViewModule extends BaseViewModule<String> {
// 
//     private TextView textView;
// 
//     public SimpleViewModule(@LayoutRes int layoutResId) {
//         super(layoutResId);
//     }
// 
//     @Override
//     public void onDataAvailable(String data) {
//         if (textView != null) {
//             textView.setText(data);
//         }
//     }
// 
//     @Override
//     public View createView(@NonNull ViewGroup root, @ColorInt int textColor, float textSize, float textAlpha) {
//         View view = LayoutInflater.from(root.getContext()).inflate(layoutResId, root, false);
//         textView = view.findViewById(R.id.debugoverlay_overlay_text);
//         textView.setTextColor(textColor);
//         textView.setTextSize(textSize);
//         textView.setAlpha(textAlpha);
//         return view;
//     }
// }


import com.ms_square.debugoverlay.OverlayModule;
import com.ms_square.debugoverlay.modules.SimpleViewModule;
package com.ms_square.debugoverlay_ext_netstats;


public class NetStatsModule extends OverlayModule<String> {

    private static final int DEFAULT_INTERVAL = 1000; // ms

    public NetStatsModule() {
        this(DEFAULT_INTERVAL);
    }

    public NetStatsModule(int interval) {
// Path: debugoverlay/src/main/java/com/ms_square/debugoverlay/OverlayModule.java
// public abstract class OverlayModule<T> implements DataModule<T>, ViewModule<T> {
// 
//     private final DataModule<T> dataModule;
// 
//     private final ViewModule<T> viewModule;
// 
//     public OverlayModule(DataModule<T> dataModule, ViewModule<T> viewModule) {
//         this.dataModule = dataModule;
//         this.viewModule = viewModule;
//     }
// 
//     @Override
//     public void start() {
//         dataModule.addObserver(viewModule);
//         dataModule.start();
//     }
// 
//     @Override
//     public void stop() {
//         dataModule.removeObserver(viewModule);
//         dataModule.stop();
//     }
// 
//     @Override
//     public void notifyObservers() {
//         dataModule.notifyObservers();
//     }
// 
//     @Override
//     public void addObserver(@NonNull DataObserver observer) {
//         dataModule.addObserver(observer);
//     }
// 
//     @Override
//     public void removeObserver(@NonNull DataObserver observer) {
//         dataModule.removeObserver(observer);
//     }
// 
//     @Override
//     public void onDataAvailable(T data) {
//         viewModule.onDataAvailable(data);
//     }
// 
//     @Override
//     public View createView(@NonNull ViewGroup root, @ColorInt int textColor, float textSize, float textAlpha) {
//         return viewModule.createView(root, textColor, textSize, textAlpha);
//     }
// }
// 
// Path: debugoverlay/src/main/java/com/ms_square/debugoverlay/modules/SimpleViewModule.java
// public class SimpleViewModule extends BaseViewModule<String> {
// 
//     private TextView textView;
// 
//     public SimpleViewModule(@LayoutRes int layoutResId) {
//         super(layoutResId);
//     }
// 
//     @Override
//     public void onDataAvailable(String data) {
//         if (textView != null) {
//             textView.setText(data);
//         }
//     }
// 
//     @Override
//     public View createView(@NonNull ViewGroup root, @ColorInt int textColor, float textSize, float textAlpha) {
//         View view = LayoutInflater.from(root.getContext()).inflate(layoutResId, root, false);
//         textView = view.findViewById(R.id.debugoverlay_overlay_text);
//         textView.setTextColor(textColor);
//         textView.setTextSize(textSize);
//         textView.setAlpha(textAlpha);
//         return view;
//     }
// }


// Path: debugoverlay-ext-netstats/src/main/java/com/ms_square/debugoverlay_ext_netstats/NetStatsModule.java
import com.ms_square.debugoverlay.OverlayModule;
import com.ms_square.debugoverlay.modules.SimpleViewModule;

package com.ms_square.debugoverlay_ext_netstats;


public class NetStatsModule extends OverlayModule<String> {

    private static final int DEFAULT_INTERVAL = 1000; // ms

    public NetStatsModule() {
        this(DEFAULT_INTERVAL);
    }

    public NetStatsModule(int interval) {
        super(new NetStatsDataModule(interval), new SimpleViewModule(R.layout.debugoverlay_netstats));