proto option for C# namespace

pull/255/merge
Darien Raymond 2016-12-23 00:24:28 +01:00
parent e66a787782
commit eb782436b3
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
33 changed files with 187 additions and 1 deletions

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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
}

View File

@ -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";

View File

@ -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";

View File

@ -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";