Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
thythm
ribbon
提交
c98bb7ff
R
ribbon
项目概览
thythm
/
ribbon
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
ribbon
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c98bb7ff
编写于
2月 20, 2014
作者:
A
Allen Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
upgrade to new RxNetty
上级
1cdb043f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
27 deletion
+41
-27
build.gradle
build.gradle
+1
-1
ribbon-rxnetty/src/main/java/com/netflix/client/netty/http/NettyHttpClient.java
...n/java/com/netflix/client/netty/http/NettyHttpClient.java
+40
-26
未找到文件。
build.gradle
浏览文件 @
c98bb7ff
...
@@ -82,7 +82,7 @@ project(':ribbon-rxnetty') {
...
@@ -82,7 +82,7 @@ project(':ribbon-rxnetty') {
compile
project
(
':ribbon-http'
)
compile
project
(
':ribbon-http'
)
compile
project
(
':ribbon-loadbalancer'
)
compile
project
(
':ribbon-loadbalancer'
)
compile
project
(
':ribbon-core'
)
compile
project
(
':ribbon-core'
)
compile
'com.netflix.rxnetty:rx-netty:0.2.
4
'
compile
'com.netflix.rxnetty:rx-netty:0.2.
6
'
testCompile
'com.google.mockwebserver:mockwebserver:20130706'
testCompile
'com.google.mockwebserver:mockwebserver:20130706'
testCompile
project
(
':ribbon-test'
)
testCompile
project
(
':ribbon-test'
)
}
}
...
...
ribbon-rxnetty/src/main/java/com/netflix/client/netty/http/NettyHttpClient.java
浏览文件 @
c98bb7ff
...
@@ -36,14 +36,18 @@ import io.netty.util.ReferenceCounted;
...
@@ -36,14 +36,18 @@ import io.netty.util.ReferenceCounted;
import
io.reactivex.netty.client.RxClient
;
import
io.reactivex.netty.client.RxClient
;
import
io.reactivex.netty.pipeline.PipelineConfigurator
;
import
io.reactivex.netty.pipeline.PipelineConfigurator
;
import
io.reactivex.netty.pipeline.PipelineConfigurators
;
import
io.reactivex.netty.pipeline.PipelineConfigurators
;
import
io.reactivex.netty.protocol.http.HttpClient
;
import
io.reactivex.netty.protocol.http.HttpClientBuilder
;
import
io.reactivex.netty.protocol.http.ObservableHttpResponse
;
import
io.reactivex.netty.protocol.text.sse.SSEEvent
;
import
io.reactivex.netty.protocol.text.sse.SSEEvent
;
import
io.reactivex.netty.protocol.http.client.HttpClient
;
import
io.reactivex.netty.protocol.http.client.HttpClientBuilder
;
import
io.reactivex.netty.protocol.http.client.HttpRequest
;
import
io.reactivex.netty.protocol.http.client.HttpResponse
;
import
java.io.ByteArrayOutputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.Closeable
;
import
java.io.Closeable
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.net.URI
;
import
java.net.URISyntaxException
;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Map.Entry
;
...
@@ -62,8 +66,7 @@ import com.netflix.client.config.CommonClientConfigKey;
...
@@ -62,8 +66,7 @@ import com.netflix.client.config.CommonClientConfigKey;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.client.config.IClientConfigKey
;
import
com.netflix.client.config.IClientConfigKey
;
import
com.netflix.client.http.HttpRequest
;
//import com.netflix.client.http.HttpResponse;
import
com.netflix.client.http.HttpResponse
;
import
com.netflix.client.http.UnexpectedHttpResponseException
;
import
com.netflix.client.http.UnexpectedHttpResponseException
;
import
com.netflix.serialization.Deserializer
;
import
com.netflix.serialization.Deserializer
;
import
com.netflix.serialization.HttpSerializationContext
;
import
com.netflix.serialization.HttpSerializationContext
;
...
@@ -157,9 +160,9 @@ public class NettyHttpClient implements Closeable {
...
@@ -157,9 +160,9 @@ public class NettyHttpClient implements Closeable {
pipeline
.
addLast
(
FullHttpResponseHandler
.
NAME
,
new
FullHttpResponseHandler
<
T
>(
serializationFactory
,
request
,
typeDef
,
requestConfig
));
pipeline
.
addLast
(
FullHttpResponseHandler
.
NAME
,
new
FullHttpResponseHandler
<
T
>(
serializationFactory
,
request
,
typeDef
,
requestConfig
));
}
}
}
}
/*
private
FullHttpRequest
getHttpRequest
(
HttpRequest
request
,
IClientConfig
requestConfig
)
throws
ClientException
{
private
HttpRequest<ByteBuf> getHttpRequest(com.netflix.client.http.
HttpRequest request, IClientConfig requestConfig) throws ClientException {
FullHttpRequest
r
=
null
;
HttpRequest<ByteBuf>
r = null;
Object entity = request.getEntity();
Object entity = request.getEntity();
String uri = request.getUri().toString();
String uri = request.getUri().toString();
if (request.getQueryParams() != null) {
if (request.getQueryParams() != null) {
...
@@ -198,6 +201,7 @@ public class NettyHttpClient implements Closeable {
...
@@ -198,6 +201,7 @@ public class NettyHttpClient implements Closeable {
buf = Unpooled.wrappedBuffer(content);
buf = Unpooled.wrappedBuffer(content);
contentLength = content.length;
contentLength = content.length;
}
}
r = HttpRequest
r = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(request.getVerb().name()), uri, buf);
r = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(request.getVerb().name()), uri, buf);
if (contentLength >= 0) {
if (contentLength >= 0) {
r.headers().set(HttpHeaders.Names.CONTENT_LENGTH, contentLength);
r.headers().set(HttpHeaders.Names.CONTENT_LENGTH, contentLength);
...
@@ -215,7 +219,7 @@ public class NettyHttpClient implements Closeable {
...
@@ -215,7 +219,7 @@ public class NettyHttpClient implements Closeable {
}
}
return r;
return r;
}
}
*/
public
IClientConfig
getConfig
()
{
public
IClientConfig
getConfig
()
{
return
config
;
return
config
;
}
}
...
@@ -224,7 +228,7 @@ public class NettyHttpClient implements Closeable {
...
@@ -224,7 +228,7 @@ public class NettyHttpClient implements Closeable {
return
serializationFactory
;
return
serializationFactory
;
}
}
protected
<
S
>
S
getProperty
(
IClientConfigKey
<
S
>
key
,
HttpRequest
request
,
@Nullable
IClientConfig
requestConfig
)
{
protected
<
S
>
S
getProperty
(
IClientConfigKey
<
S
>
key
,
com
.
netflix
.
client
.
http
.
HttpRequest
request
,
@Nullable
IClientConfig
requestConfig
)
{
if
(
requestConfig
!=
null
&&
requestConfig
.
getPropertyWithType
(
key
)
!=
null
)
{
if
(
requestConfig
!=
null
&&
requestConfig
.
getPropertyWithType
(
key
)
!=
null
)
{
return
requestConfig
.
getPropertyWithType
(
key
);
return
requestConfig
.
getPropertyWithType
(
key
);
}
else
if
(
request
.
getOverrideConfig
()
!=
null
&&
request
.
getOverrideConfig
().
getPropertyWithType
(
key
)
!=
null
)
{
}
else
if
(
request
.
getOverrideConfig
()
!=
null
&&
request
.
getOverrideConfig
().
getPropertyWithType
(
key
)
!=
null
)
{
...
@@ -233,7 +237,15 @@ public class NettyHttpClient implements Closeable {
...
@@ -233,7 +237,15 @@ public class NettyHttpClient implements Closeable {
return
config
.
getPropertyWithType
(
key
);
return
config
.
getPropertyWithType
(
key
);
}
}
}
}
protected
<
S
>
S
getProperty
(
IClientConfigKey
<
S
>
key
,
@Nullable
IClientConfig
requestConfig
)
{
if
(
requestConfig
!=
null
&&
requestConfig
.
getPropertyWithType
(
key
)
!=
null
)
{
return
requestConfig
.
getPropertyWithType
(
key
);
}
else
{
return
config
.
getPropertyWithType
(
key
);
}
}
/**
/**
* Create an Observable for entities parsed from raw Server-Sent-Event using the default {@link SerializationFactory} and
* Create an Observable for entities parsed from raw Server-Sent-Event using the default {@link SerializationFactory} and
* client's default configuration.
* client's default configuration.
...
@@ -279,7 +291,7 @@ public class NettyHttpClient implements Closeable {
...
@@ -279,7 +291,7 @@ public class NettyHttpClient implements Closeable {
*/
*/
public
<
T
>
Observable
<
ServerSentEvent
<
T
>>
createServerSentEventEntityObservable
(
final
HttpRequest
request
,
public
<
T
>
Observable
<
ServerSentEvent
<
T
>>
createServerSentEventEntityObservable
(
final
HttpRequest
request
,
final
TypeDef
<
T
>
typeDef
,
@Nullable
final
IClientConfig
requestConfig
)
{
final
TypeDef
<
T
>
typeDef
,
@Nullable
final
IClientConfig
requestConfig
)
{
Observable
<
Observable
HttpResponse
<
SSEEvent
>>
observable
=
createServerSentEventObservable
(
request
,
requestConfig
);
Observable
<
HttpResponse
<
SSEEvent
>>
observable
=
createServerSentEventObservable
(
request
,
requestConfig
);
return
observable
.
flatMap
(
new
Func1
<
ObservableHttpResponse
<
SSEEvent
>,
Observable
<
ServerSentEvent
<
T
>>>()
{
return
observable
.
flatMap
(
new
Func1
<
ObservableHttpResponse
<
SSEEvent
>,
Observable
<
ServerSentEvent
<
T
>>>()
{
@Override
@Override
...
@@ -418,26 +430,28 @@ public class NettyHttpClient implements Closeable {
...
@@ -418,26 +430,28 @@ public class NettyHttpClient implements Closeable {
* Create an Observable of ObservableHttpResponse. Use this API if you need to manipulate the Netty pipeline
* Create an Observable of ObservableHttpResponse. Use this API if you need to manipulate the Netty pipeline
* and produce custom observable content.
* and produce custom observable content.
*/
*/
public
<
T
>
Observable
<
ObservableHttpResponse
<
T
>>
createObservableHttpResponse
(
final
HttpRequest
request
,
public
<
I
,
O
>
Observable
<
HttpResponse
<
O
>>
createObservableHttpResponse
(
final
HttpRequest
<
I
>
request
,
final
PipelineConfigurator
<
T
,
FullHttpRequest
>
protocolHandle
r
,
@Nullable
final
IClientConfig
requestConfig
,
final
PipelineConfigurator
<
HttpResponse
<
O
>,
HttpRequest
<
I
>>
configurato
r
,
@Nullable
final
IClientConfig
requestConfig
,
final
RxClient
.
ClientConfig
rxClientConfig
)
{
final
RxClient
.
ClientConfig
rxClientConfig
)
{
Preconditions
.
checkNotNull
(
request
);
Preconditions
.
checkNotNull
(
request
);
Preconditions
.
checkNotNull
(
protocolHandle
r
);
Preconditions
.
checkNotNull
(
configurato
r
);
Preconditions
.
checkNotNull
(
rxClientConfig
);
Preconditions
.
checkNotNull
(
rxClientConfig
);
HttpClientBuilder
<
FullHttpRequest
,
T
>
clientBuilder
=
URI
uri
=
null
;
new
HttpClientBuilder
<
FullHttpRequest
,
T
>(
request
.
getUri
().
getHost
(),
request
.
getUri
().
getPort
());
int
requestConnectTimeout
=
getProperty
(
IClientConfigKey
.
CommonKeys
.
ConnectTimeout
,
request
,
requestConfig
);
HttpClient
<
FullHttpRequest
,
T
>
client
=
clientBuilder
.
channelOption
(
ChannelOption
.
CONNECT_TIMEOUT_MILLIS
,
requestConnectTimeout
).
eventloop
(
getNextEventGroupLoop
())
.
pipelineConfigurator
(
protocolHandler
).
config
(
rxClientConfig
).
build
();
FullHttpRequest
r
=
null
;
try
{
try
{
r
=
getHttpRequest
(
request
,
requestConfig
);
uri
=
new
URI
(
request
.
getUri
()
);
}
catch
(
final
Exception
e
)
{
}
catch
(
URISyntax
Exception
e
)
{
return
Observable
.
error
(
e
);
return
Observable
.
error
(
e
);
}
}
return
client
.
submit
(
r
);
String
host
=
uri
.
getHost
();
int
port
=
uri
.
getPort
();
HttpClientBuilder
<
I
,
O
>
clientBuilder
=
new
HttpClientBuilder
<
I
,
O
>(
host
,
port
).
pipelineConfigurator
(
configurator
);
int
requestConnectTimeout
=
getProperty
(
IClientConfigKey
.
CommonKeys
.
ConnectTimeout
,
requestConfig
);
HttpClient
<
I
,
O
>
client
=
clientBuilder
.
channelOption
(
ChannelOption
.
CONNECT_TIMEOUT_MILLIS
,
requestConnectTimeout
).
eventloop
(
getNextEventGroupLoop
()).
config
(
rxClientConfig
).
build
();
return
client
.
submit
(
request
);
}
}
/**
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录