mirror of https://github.com/v2ray/v2ray-core
proto option for C# namespace
parent
e66a787782
commit
eb782436b3
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.app.dispatcher;
|
||||
option csharp_namespace = "V2Ray.Core.App.Dispatcher";
|
||||
option go_package = "dispatcher";
|
||||
option java_package = "com.v2ray.core.app.dispatcher";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.app.dns;
|
||||
option csharp_namespace = "V2Ray.Core.App.Dns";
|
||||
option go_package = "dns";
|
||||
option java_package = "com.v2ray.core.app.dns";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.app.router;
|
||||
option csharp_namespace = "V2Ray.Core.App.Router";
|
||||
option go_package = "router";
|
||||
option java_package = "com.v2ray.core.app.router";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.app.web;
|
||||
option csharp_namespace = "V2Ray.Core.App.Web";
|
||||
option go_package = "web";
|
||||
option java_package = "com.v2ray.core.app.web";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.common.net;
|
||||
option csharp_namespace = "V2Ray.Core.Common.Net";
|
||||
option go_package = "net";
|
||||
option java_package = "com.v2ray.core.common.net";
|
||||
option java_outer_classname = "AddressProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.common.net;
|
||||
option csharp_namespace = "V2Ray.Core.Common.Net";
|
||||
option go_package = "net";
|
||||
option java_package = "com.v2ray.core.common.net";
|
||||
option java_outer_classname = "DestinationProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.common.net;
|
||||
option csharp_namespace = "V2Ray.Core.Common.Net";
|
||||
option go_package = "net";
|
||||
option java_package = "com.v2ray.core.common.net";
|
||||
option java_outer_classname = "NetworkProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.common.net;
|
||||
option csharp_namespace = "V2Ray.Core.Common.Net";
|
||||
option go_package = "net";
|
||||
option java_package = "com.v2ray.core.common.net";
|
||||
option java_outer_classname = "PortProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.common.protocol;
|
||||
option csharp_namespace = "V2Ray.Core.Common.Protocol";
|
||||
option go_package = "protocol";
|
||||
option java_package = "com.v2ray.core.common.protocol";
|
||||
option java_outer_classname = "HeadersProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.common.protocol;
|
||||
option csharp_namespace = "V2Ray.Core.Common.Protocol";
|
||||
option go_package = "protocol";
|
||||
option java_package = "com.v2ray.core.common.protocol";
|
||||
option java_outer_classname = "ServerSpecProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.common.protocol;
|
||||
option csharp_namespace = "V2Ray.Core.Common.Protocol";
|
||||
option go_package = "protocol";
|
||||
option java_package = "com.v2ray.core.common.protocol";
|
||||
option java_outer_classname = "UserProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.common.serial;
|
||||
option csharp_namespace = "V2Ray.Core.Common.Serial";
|
||||
option go_package = "serial";
|
||||
option java_package = "com.v2ray.core.common.serial";
|
||||
option java_outer_classname = "TypedMessageProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core;
|
||||
option csharp_namespace = "V2Ray.Core";
|
||||
option go_package = "core";
|
||||
option java_package = "com.v2ray.core";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.blackhole;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Blackhole";
|
||||
option go_package = "blackhole";
|
||||
option java_package = "com.v2ray.core.proxy.blackhole";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.dokodemo;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Dokodemo";
|
||||
option go_package = "dokodemo";
|
||||
option java_package = "com.v2ray.core.proxy.dokodemo";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.freedom;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Freedom";
|
||||
option go_package = "freedom";
|
||||
option java_package = "com.v2ray.core.proxy.freedom";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.http;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Http";
|
||||
option go_package = "http";
|
||||
option java_package = "com.v2ray.core.proxy.http";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.shadowsocks;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Shadowsocks";
|
||||
option go_package = "shadowsocks";
|
||||
option java_package = "com.v2ray.core.proxy.shadowsocks";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.socks;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Socks";
|
||||
option go_package = "socks";
|
||||
option java_package = "com.v2ray.core.proxy.socks";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.vmess;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Vmess";
|
||||
option go_package = "vmess";
|
||||
|
||||
option java_package = "com.v2ray.core.proxy.vmess";
|
||||
option java_outer_classname = "AccountProto";
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.vmess.inbound;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Vmess.Inbound";
|
||||
option go_package = "inbound";
|
||||
option java_package = "com.v2ray.core.proxy.vmess.inbound";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.proxy.vmess.outbound;
|
||||
option csharp_namespace = "V2Ray.Core.Proxy.Vmess.Outbound";
|
||||
option go_package = "outbound";
|
||||
option java_package = "com.v2ray.core.proxy.vmess.outbound";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport;
|
||||
option csharp_namespace = "V2Ray.Core.Transport";
|
||||
option go_package = "transport";
|
||||
option java_package = "com.v2ray.core.transport";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet";
|
||||
option go_package = "internet";
|
||||
option java_package = "com.v2ray.core.transport.internet";
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet.headers.http;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet.Headers.Http";
|
||||
option go_package = "http";
|
||||
option java_package = "com.v2ray.core.transport.internet.headers.http";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet.headers.noop;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet.Headers.Noop";
|
||||
option go_package = "noop";
|
||||
option java_package = "com.v2ray.core.transport.internet.headers.noop";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet.headers.srtp;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet.Headers.Srtp";
|
||||
option go_package = "srtp";
|
||||
option java_package = "com.v2ray.core.transport.internet.headers.srtp";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet.headers.utp;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet.Headers.Utp";
|
||||
option go_package = "utp";
|
||||
option java_package = "com.v2ray.core.transport.internet.headers.utp";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet.kcp;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet.Kcp";
|
||||
option go_package = "kcp";
|
||||
option java_package = "com.v2ray.core.transport.internet.kcp";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -0,0 +1,155 @@
|
|||
package kcp
|
||||
|
||||
import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultRTT = 100
|
||||
queueSize = 10
|
||||
)
|
||||
|
||||
type Queue struct {
|
||||
value [queueSize]uint32
|
||||
start uint32
|
||||
length uint32
|
||||
}
|
||||
|
||||
func (v *Queue) Push(value uint32) {
|
||||
if v.length < queueSize {
|
||||
v.value[v.length] = value
|
||||
v.length++
|
||||
return
|
||||
}
|
||||
v.value[v.start] = value
|
||||
v.start++
|
||||
if v.start == queueSize {
|
||||
v.start = 0
|
||||
}
|
||||
}
|
||||
|
||||
func (v *Queue) Max() uint32 {
|
||||
max := v.value[0]
|
||||
for i := 1; i < queueSize; i++ {
|
||||
if v.value[i] > max {
|
||||
max = v.value[i]
|
||||
}
|
||||
}
|
||||
return max
|
||||
}
|
||||
|
||||
func (v *Queue) Min() uint32 {
|
||||
max := v.value[0]
|
||||
for i := 1; i < queueSize; i++ {
|
||||
if v.value[i] < max {
|
||||
max = v.value[i]
|
||||
}
|
||||
}
|
||||
return max
|
||||
}
|
||||
|
||||
type CongestionState byte
|
||||
|
||||
const (
|
||||
CongestionStateRTTProbe CongestionState = iota
|
||||
CongestionStateBandwidthProbe
|
||||
CongestionStateTransfer
|
||||
)
|
||||
|
||||
type Congestion struct {
|
||||
sync.RWMutex
|
||||
|
||||
state CongestionState
|
||||
stateSince uint32
|
||||
limit uint32 // bytes per 1000 seconds
|
||||
|
||||
rtt uint32 // millisec
|
||||
rttHistory Queue
|
||||
rttUpdateTime uint32
|
||||
|
||||
initialThroughput uint32 // bytes per 1000 seconds
|
||||
|
||||
cycleStartTime uint32
|
||||
cycleBytesConfirmed uint32
|
||||
cycleBytesSent uint32
|
||||
cycleBytesLimit uint32
|
||||
|
||||
cycle uint32
|
||||
bestCycleBytesConfirmed uint32
|
||||
bestCycleBytesSent uint32
|
||||
}
|
||||
|
||||
func (v *Congestion) SetState(current uint32, state CongestionState) {
|
||||
v.state = state
|
||||
v.stateSince = current
|
||||
}
|
||||
|
||||
func (v *Congestion) Update(current uint32) {
|
||||
switch v.state {
|
||||
case CongestionStateRTTProbe:
|
||||
if v.rtt > 0 {
|
||||
v.SetState(current, CongestionStateBandwidthProbe)
|
||||
v.cycleStartTime = current
|
||||
v.cycleBytesConfirmed = 0
|
||||
v.cycleBytesSent = 0
|
||||
v.cycleBytesLimit = v.initialThroughput * v.rtt / 1000 / 1000
|
||||
}
|
||||
case CongestionStateBandwidthProbe:
|
||||
if current-v.cycleStartTime >= v.rtt {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (v *Congestion) AddBytesConfirmed(current uint32, bytesConfirmed uint32) {
|
||||
v.Lock()
|
||||
defer v.Unlock()
|
||||
|
||||
v.cycleBytesConfirmed += bytesConfirmed
|
||||
v.Update(current)
|
||||
}
|
||||
|
||||
func (v *Congestion) UpdateRTT(current uint32, rtt uint32) {
|
||||
v.Lock()
|
||||
defer v.Unlock()
|
||||
|
||||
if v.state == CongestionStateRTTProbe || rtt < v.rtt {
|
||||
v.rtt = rtt
|
||||
v.rttUpdateTime = current
|
||||
}
|
||||
|
||||
v.Update(current)
|
||||
}
|
||||
|
||||
func (v *Congestion) GetBytesLimit() uint32 {
|
||||
v.RLock()
|
||||
defer v.RUnlock()
|
||||
|
||||
if v.state == CongestionStateRTTProbe {
|
||||
return v.initialThroughput/1000/(1000/defaultRTT) - v.cycleBytesSent
|
||||
}
|
||||
|
||||
return v.cycleBytesLimit
|
||||
}
|
||||
|
||||
func (v *Congestion) RoundTripTime() uint32 {
|
||||
v.RLock()
|
||||
defer v.RUnlock()
|
||||
|
||||
if v.state == CongestionStateRTTProbe {
|
||||
return defaultRTT
|
||||
}
|
||||
|
||||
return v.rtt
|
||||
}
|
||||
|
||||
func (v *Congestion) Timeout() uint32 {
|
||||
v.RLock()
|
||||
defer v.RUnlock()
|
||||
|
||||
if v.state == CongestionStateRTTProbe {
|
||||
return defaultRTT * 3 / 2
|
||||
}
|
||||
|
||||
return v.rtt * 3 / 2
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet.tcp;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet.Tcp";
|
||||
option go_package = "tcp";
|
||||
option java_package = "com.v2ray.core.transport.internet.tcp";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet.tls;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet.Tls";
|
||||
option go_package = "tls";
|
||||
option java_package = "com.v2ray.core.transport.internet.tls";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package v2ray.core.transport.internet.ws;
|
||||
option csharp_namespace = "V2Ray.Core.Transport.Internet.Ws";
|
||||
option go_package = "ws";
|
||||
option java_package = "com.v2ray.core.transport.internet.ws";
|
||||
option java_outer_classname = "ConfigProto";
|
||||
|
|
Loading…
Reference in New Issue