summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/pluggableTransports/models/KcpConfig.java
blob: 255e7dd7b25939a47be97e9cf01195b1a66b827d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package se.leap.bitmaskclient.pluggableTransports.models;

import androidx.annotation.NonNull;

import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class KcpConfig {

    // check OpenVPN's --sndbuf size and --rcvbuf size
    public static final int DEFAULT_KCP_SEND_WINDOW_SIZE = 32;
    public static final int DEFAULT_KCP_RECEIVE_WINDOW_SIZE = 32;
    public static final int DEFAULT_KCP_READ_BUFFER = 16 * 1024 * 1024;
    public static final int DEFAULT_KCP_WRITE_BUFFER = 16 * 1024 * 1024;

    final boolean enabled;
    final int sendWindowSize;
    final int receiveWindowSize;
    final int readBuffer;
    final int writeBuffer;

    public KcpConfig(boolean enabled) {
        this.enabled = enabled;
        this.sendWindowSize = DEFAULT_KCP_SEND_WINDOW_SIZE;
        this.receiveWindowSize = DEFAULT_KCP_RECEIVE_WINDOW_SIZE;
        this.readBuffer = DEFAULT_KCP_READ_BUFFER;
        this.writeBuffer = DEFAULT_KCP_WRITE_BUFFER;
    }

    @NonNull
    @Override
    public String toString() {
        Gson gson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
                .create();
        return gson.toJson(this);
    }
}