Commit Graph

88 Commits

Author SHA1 Message Date
Eric Anderson cb15779e59 Use class name, not instance, for invoking static method 2015-07-06 16:27:21 -07:00
Eric Anderson 10578e31c0 param in JavaDoc is lower-case 2015-07-06 16:27:21 -07:00
Xiao Hang 3777b8bf65 Use hostname instead of InetAddress for Socket creation.
On Android platform, the constructor using hostname will iterate through all solved ip address for making connection.
Before we implement happy eyeballs, this could be a workaround for Android users.
2015-06-29 19:12:15 -07:00
Eric Anderson 45da9c5766 Add a few ChannelImpl tests and improve error status 2015-06-26 12:19:41 -07:00
Xudong Ma 6e406ac4a5 Refactor OkHttpProtocolNegotiator, move Android related operations into an inner class. 2015-06-26 09:59:22 -07:00
Xudong Ma eb15eb2821 Some cleanup for okhttp:
1. Move DEFAULT_CONNECTION_SPEC to OkHttpChannelBuilder
2. make OkHttpClientTransport package-private
3. Rename OkHttpChannelBuilder.setConnectionSpec to connectionSpec
2015-06-18 13:29:18 -07:00
Xudong Ma 25da64937d Support setting ALPN for Android older than 5.0, OkHttp(2.3+) implementation only support such function for Android 5.0+.
Manually tested with the test App: https://github.com/madongfly/grpc-android-test.

Fixes #520
2015-06-11 14:39:26 -07:00
Josh Humphries 0d03f89467 add ping 2015-06-10 12:20:08 -04:00
Xudong Ma d242b225d0 Upgrade OkHttp to 2.4.
Fixes #490
2015-06-01 14:53:19 -07:00
Xudong Ma eed8f923af okhttp: Call onError for IOException thrown by FrameReader.nextFrame().
Since OkHttp wraps many protocol error as IOException, we need to send GoAway for such errors.

Fixes #487
2015-05-29 10:21:52 -07:00
Xudong Ma 0782c0408d Catch Exception thrown when query NPN selected protocol on a socket that haven't started hand shake. 2015-05-29 08:59:05 -07:00
Xudong Ma 2fe279f7c2 Add SelectedProtocolQuerier to get protocol selected by NPN on Android.
Fixes #467

Manually tested by using NPN on Android 4.3 (api level 18) talk to GFE.
2015-05-27 17:16:44 -07:00
Louis Ryan 641fc288fc Add support for indeterminate length messages. This will make using GRPC easier for non-proto payload types.
Sync to head
2015-05-26 15:44:46 -07:00
Xudong Ma 6affc8dcd5 upgrade okhttp to 2.3 2015-05-22 16:45:13 -07:00
Xudong Ma 0d480879e5 okhttp: outbound flow control.
Fixes #371
2015-05-21 23:05:54 -07:00
jonathanlin e50f671f1d Change OkHttpClientTransport#start to construct a Socket with the hostname and port if the address is unresolved. 2015-05-21 16:43:22 -07:00
Xudong Ma 7c1dabab5b okhttp: don't crash if receive window_update for an non-exit stream which may have existed.
This fixes #441
2015-05-19 10:27:03 -07:00
Xudong Ma 71447ce7af okhttp: changes for handling unknown stream id.
1. update connection window when receives DATA for existed streams.
2. kill the connection when receives unknown (not exist and never existed) stream id.
2015-05-18 14:15:42 -07:00
Xudong Ma c3125bebdb okhttp: send reset when client receives halfClose from server before sending halfClose.
So that the server side stream can be fully closed.

This fixed #300
2015-05-14 12:05:51 -07:00
Eric Anderson 1787106cc7 isReady() should return false until stream allocated
isReady() can provide pushback while the call is in progress, but it
can also provide the pushback necessary when the client creates more
streams than permitted by MAX_CONCURRENT_STREAMS.

As part of this commit, OkHttp is now calling onReady() after call
creation (it previously never called onReady()).
2015-05-12 16:41:50 -07:00
Xudong Ma 7ecb6fa431 okhttp: Catch Exceptions thrown by the frist platform.getSelectedProtocol(sslSocket), since in some implementations, querying selected protocol before the handshake will fail with exception. 2015-05-11 13:09:15 -07:00
Eric Anderson 10fb20650d Produce combined JavaDoc, add links, exclude internals 2015-05-05 11:32:15 -07:00
Eric Anderson 35cb22dd42 Add comment to satisfy checkstyle 2015-05-05 08:47:00 -07:00
nmittler 64176d5560 Adding outbound flow control for Netty. 2015-05-04 12:19:57 -07:00
nmittler 7779b4fddf Cleaning up some warnings. 2015-04-30 13:57:38 -07:00
Xudong Ma 69c67042a6 De-flake OkHttpClientTransportTest.pendingStreamFailedByIdExhausted.
Fixes #356
2015-04-29 16:25:22 -07:00
Eric Anderson 9ffc71136e Fix style violations introduced in b2a3f7
The long line is caught by checkstyle so causes Travis-CI to fail.
2015-04-29 08:49:28 -07:00
Xudong Ma b2a3f7bd1e okhttp: respect SETTINGS_INITIAL_WINDOW_SIZE in outbound flow control. 2015-04-28 15:31:29 -07:00
Xudong Ma 8a5d927a9a Fix the race between failing and starting pending streams.
Fixes #330
2015-04-28 13:32:46 -07:00
Louis Ryan f679edcfcc Fix memeory leak in MessageFramer caused by allocation of 'empty' buffers never being released.
The buffers are not empty in reality as the allocators enforce a minimum size
2015-04-28 10:10:00 -07:00
Xudong Ma d0aad72441 okhttp: Clean up stream when error happens.
Resolves #279
2015-04-27 14:07:43 -07:00
Xudong Ma 4b00476d33 okhttp: Flushes headers out immediately, so that the server can be aware of the stream before receiving real data (or half close).
Resolves #257.
2015-04-27 13:10:04 -07:00
Xudong Ma 2f4aa5a490 Use Status "UNKNOWN" instead of "INTERNAL" when Status.fromThrowable can not find a cause with a status. 2015-04-24 10:52:27 +08:00
Louis Ryan f7010f2eac Use message size as a hint to the allocator for buffer capacity.
Set upper and lower bounds for Netty & OkHttp allocators based on transport limitations and benchmark results.
Fix OkHttp OutboundFlowController to chunk payloads larger than frameWriter.maxDataLength
Allow OkHttp to allocate buffers to FrameWriter larger than max DATA length
2015-04-23 16:58:43 -07:00
Eric Anderson fc3e41674b Propagate explicit flushes through MessageFramer
MessageFramer allows queing of data and explicit flushing. Sinks
generally can benefit from knowing when they are required to flush, so
we now tell them when MessageFramer received a flush so they only have
to flush when required.
2015-04-21 10:29:08 -07:00
nmittler f920badc5e Upgrading to the latest Netty version. 2015-04-16 08:42:56 -07:00
Xudong Ma 883eb62de4 OkHttp: Temporally support multiple h2-xx protocol on client side.
Since the user provided SSLSocketFactory (especially in Android) may already do the handshake when creates the SSLSocket, and it may choose a different protocol name other than the one OkHttp is using.

Resolves #293
2015-04-16 09:04:19 +08:00
Xudong Ma 775829a1b2 okhttp: Reset stream when receiving window is negative.
Resolves #215
2015-04-09 09:07:59 +08:00
Xudong Ma c2f039411a TLS support for okhttp transport.
Resolves #22

Add an API to let users specify ConnectionSpec.
2015-04-08 12:41:35 +08:00
Xudong Ma fcf1517054 Respect MAX_CONCURRENT_STREAMS in OkHttp client.
If a newStream is called  while MAX_CONCURRENT_STREAMS is reached, then get the call blocked and the request queued, until:
1. a running stream closed, and this newStream() request is accepted.
2. receives go-away from server, fail all pending new stream requests.
3. the available ids are exhausted.
2015-04-07 09:53:47 +08:00
Xudong Ma 9aae6f65fa checkstyle change:
1. Adds <property name="separateLineBetweenGroups" value="true"/> to CustomImportOrder to enfore blank line between imports groups.
2. Uses checkstyle 6.5, which fixed a bug of "CustomImportOrder checks import sorting according to ASCII order instead of case-insensitive alphabetical order".
2015-04-07 08:27:48 +08:00
Xudong Ma eb2d65bb0c Disable Nagle's algorithm, this was exposed by our internal micro benchmark, the streamingInputCall() method happened to have the write-write-read pattern which added 40ms extra delay.
According to our micro benchmark, this change improves the performance, see https://screenshot.googleplex.com/cfxjPGxkgF.png for the previous results, there were 4 out of 6 scenarios had higher latency than netty transport.

https://screenshot.googleplex.com/Rq92tYMvBE.png shows the results after this change, the latencies in all scenarios are less than netty transport.

This commit fixes #60.
2015-04-02 13:44:47 +08:00
Thomas ten Cate 9175d9d79e Fix data corruption issue receiving payloads > 2kB
Also add OkHttpReadableBuffer unit test, and increase the test string
length to expose the bug.

Also use array equality assertions in the base test, instead of
comparisons whose return value is discarded.

Fixes #231.
2015-03-22 13:14:57 +01:00
Eric Anderson 7865b031e1 okhttp: code style fix; handle exception
For code style, we either need a comment describing why an exception is
ignored or to actually handle the exception. In this case there doesn't
seem to be a strong reason to ignore the exception, but it isn't all
that important either, so just log at INFO.
2015-03-21 09:12:30 -07:00
Xudong Ma 79ef04bc91 Fix a race condition in the test, we may nitify MockFrameReader to return before it satrts waiting.
This commit fixes #223
2015-03-21 23:01:06 +08:00
Xudong Ma 7c6b627170 Close frame reader and notify the listener in reader thread, to avoid reading after reader is closed. 2015-03-17 08:04:07 +08:00
nmittler 23972a25b9 Adding outbound flow control API for the transport API 2015-03-16 14:17:03 -07:00
Eric Anderson c3e8dae6ce Add checkstyle checking
The checkstyle.xml is a slightly modified version of the upstream Google
checkstyle configuration. All changes have comment describing them.

Lots of warnings were corrected. Examples is the only project that has
warnings still, as the necessary changes require some thought.
2015-03-16 10:53:13 -07:00
Jakob Buchgraber 0076243063 Add WritableBuffer interface for zero copy data writes. Fixes #8
WritableBuffer is a generic interface that allows to transfer data
from gRPC directly to the native transport's buffer implementation.
2015-03-13 13:00:44 -07:00
nmittler fad21aafe7 Test receiving invalid stream IDs in okhttp
Fixes #173
2015-03-09 14:10:10 -07:00