diff options
author | Stanley Cheung <stanleycheung@google.com> | 2015-08-27 13:53:42 -0700 |
---|---|---|
committer | Stanley Cheung <stanleycheung@google.com> | 2015-08-27 13:53:42 -0700 |
commit | 6905915db1fe4b66e40f03014f7f14c74f3fee16 (patch) | |
tree | 0490cd52ebcaa391df484b84bd947b406bc2b55b /grpc-common/java/android/app/src | |
parent | 209d047db80a2c289fc24b3fafd85945dbcfb543 (diff) |
prepare for move
Diffstat (limited to 'grpc-common/java/android/app/src')
-rw-r--r-- | grpc-common/java/android/app/src/main/AndroidManifest.xml | 22 | ||||
-rw-r--r-- | grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/GreeterGrpc.java | 179 | ||||
-rw-r--r-- | grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/Helloworld.java | 175 | ||||
-rw-r--r-- | grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/HelloworldActivity.java | 90 | ||||
-rw-r--r-- | grpc-common/java/android/app/src/main/res/layout/activity_helloworld.xml | 54 | ||||
-rw-r--r-- | grpc-common/java/android/app/src/main/res/mipmap-hdpi/ic_launcher.png | bin | 0 -> 3418 bytes | |||
-rw-r--r-- | grpc-common/java/android/app/src/main/res/mipmap-mdpi/ic_launcher.png | bin | 0 -> 2206 bytes | |||
-rw-r--r-- | grpc-common/java/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png | bin | 0 -> 4842 bytes | |||
-rw-r--r-- | grpc-common/java/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png | bin | 0 -> 7718 bytes | |||
-rw-r--r-- | grpc-common/java/android/app/src/main/res/values/strings.xml | 3 |
10 files changed, 523 insertions, 0 deletions
diff --git a/grpc-common/java/android/app/src/main/AndroidManifest.xml b/grpc-common/java/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..8c40f11684 --- /dev/null +++ b/grpc-common/java/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="io.grpc.helloworldexample" > + + <uses-permission android:name="android.permission.INTERNET" /> + + <application + android:allowBackup="true" + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:theme="@style/Base.V7.Theme.AppCompat.Light" > + <activity + android:name=".HelloworldActivity" + android:label="@string/app_name" > + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> + +</manifest> diff --git a/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/GreeterGrpc.java b/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/GreeterGrpc.java new file mode 100644 index 0000000000..817c9fde8f --- /dev/null +++ b/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/GreeterGrpc.java @@ -0,0 +1,179 @@ +package io.grpc.helloworldexample; + +import java.io.IOException; + +import static io.grpc.stub.Calls.asyncUnaryCall; +import static io.grpc.stub.Calls.blockingUnaryCall; +import static io.grpc.stub.Calls.createMethodDescriptor; +import static io.grpc.stub.Calls.unaryFutureCall; +import static io.grpc.stub.ServerCalls.asyncUnaryRequestCall; +import static io.grpc.stub.ServerCalls.createMethodDefinition; + +public class GreeterGrpc { + + private static final io.grpc.stub.Method<Helloworld.HelloRequest, + Helloworld.HelloReply> METHOD_SAY_HELLO = + io.grpc.stub.Method.create( + io.grpc.MethodType.UNARY, "SayHello", + io.grpc.protobuf.nano.NanoUtils.<Helloworld.HelloRequest>marshaller( + new io.grpc.protobuf.nano.Parser<Helloworld.HelloRequest>() { + @Override + public Helloworld.HelloRequest parse(com.google.protobuf.nano.CodedInputByteBufferNano input) throws IOException { + return Helloworld.HelloRequest.parseFrom(input); + } + }), + io.grpc.protobuf.nano.NanoUtils.<Helloworld.HelloReply>marshaller( + new io.grpc.protobuf.nano.Parser<Helloworld.HelloReply>() { + @Override + public Helloworld.HelloReply parse(com.google.protobuf.nano.CodedInputByteBufferNano input) throws IOException { + return Helloworld.HelloReply.parseFrom(input); + } + })); + + public static GreeterStub newStub(io.grpc.Channel channel) { + return new GreeterStub(channel, CONFIG); + } + + public static GreeterBlockingStub newBlockingStub( + io.grpc.Channel channel) { + return new GreeterBlockingStub(channel, CONFIG); + } + + public static GreeterFutureStub newFutureStub( + io.grpc.Channel channel) { + return new GreeterFutureStub(channel, CONFIG); + } + + public static final GreeterServiceDescriptor CONFIG = + new GreeterServiceDescriptor(); + + public static class GreeterServiceDescriptor extends + io.grpc.stub.AbstractServiceDescriptor<GreeterServiceDescriptor> { + public final io.grpc.MethodDescriptor<Helloworld.HelloRequest, + Helloworld.HelloReply> sayHello; + + private GreeterServiceDescriptor() { + sayHello = createMethodDescriptor( + "helloworld.Greeter", METHOD_SAY_HELLO); + } + + private GreeterServiceDescriptor( + java.util.Map<java.lang.String, io.grpc.MethodDescriptor<?, ?>> methodMap) { + sayHello = (io.grpc.MethodDescriptor<Helloworld.HelloRequest, + Helloworld.HelloReply>) methodMap.get( + CONFIG.sayHello.getName()); + } + + @java.lang.Override + protected GreeterServiceDescriptor build( + java.util.Map<java.lang.String, io.grpc.MethodDescriptor<?, ?>> methodMap) { + return new GreeterServiceDescriptor(methodMap); + } + + @java.lang.Override + public com.google.common.collect.ImmutableList<io.grpc.MethodDescriptor<?, ?>> methods() { + return com.google.common.collect.ImmutableList.<io.grpc.MethodDescriptor<?, ?>>of( + sayHello); + } + } + + public static interface Greeter { + + public void sayHello(Helloworld.HelloRequest request, + io.grpc.stub.StreamObserver<Helloworld.HelloReply> responseObserver); + } + + public static interface GreeterBlockingClient { + + public Helloworld.HelloReply sayHello(Helloworld.HelloRequest request); + } + + public static interface GreeterFutureClient { + + public com.google.common.util.concurrent.ListenableFuture<Helloworld.HelloReply> sayHello( + Helloworld.HelloRequest request); + } + + public static class GreeterStub extends + io.grpc.stub.AbstractStub<GreeterStub, GreeterServiceDescriptor> + implements Greeter { + private GreeterStub(io.grpc.Channel channel, + GreeterServiceDescriptor config) { + super(channel, config); + } + + @java.lang.Override + protected GreeterStub build(io.grpc.Channel channel, + GreeterServiceDescriptor config) { + return new GreeterStub(channel, config); + } + + @java.lang.Override + public void sayHello(Helloworld.HelloRequest request, + io.grpc.stub.StreamObserver<Helloworld.HelloReply> responseObserver) { + asyncUnaryCall( + channel.newCall(config.sayHello), request, responseObserver); + } + } + + public static class GreeterBlockingStub extends + io.grpc.stub.AbstractStub<GreeterBlockingStub, GreeterServiceDescriptor> + implements GreeterBlockingClient { + private GreeterBlockingStub(io.grpc.Channel channel, + GreeterServiceDescriptor config) { + super(channel, config); + } + + @java.lang.Override + protected GreeterBlockingStub build(io.grpc.Channel channel, + GreeterServiceDescriptor config) { + return new GreeterBlockingStub(channel, config); + } + + @java.lang.Override + public Helloworld.HelloReply sayHello(Helloworld.HelloRequest request) { + return blockingUnaryCall( + channel.newCall(config.sayHello), request); + } + } + + public static class GreeterFutureStub extends + io.grpc.stub.AbstractStub<GreeterFutureStub, GreeterServiceDescriptor> + implements GreeterFutureClient { + private GreeterFutureStub(io.grpc.Channel channel, + GreeterServiceDescriptor config) { + super(channel, config); + } + + @java.lang.Override + protected GreeterFutureStub build(io.grpc.Channel channel, + GreeterServiceDescriptor config) { + return new GreeterFutureStub(channel, config); + } + + @java.lang.Override + public com.google.common.util.concurrent.ListenableFuture<Helloworld.HelloReply> sayHello( + Helloworld.HelloRequest request) { + return unaryFutureCall( + channel.newCall(config.sayHello), request); + } + } + + public static io.grpc.ServerServiceDefinition bindService( + final Greeter serviceImpl) { + return io.grpc.ServerServiceDefinition.builder("helloworld.Greeter") + .addMethod(createMethodDefinition( + METHOD_SAY_HELLO, + asyncUnaryRequestCall( + new io.grpc.stub.ServerCalls.UnaryRequestMethod< + Helloworld.HelloRequest, + Helloworld.HelloReply>() { + @java.lang.Override + public void invoke( + Helloworld.HelloRequest request, + io.grpc.stub.StreamObserver<Helloworld.HelloReply> responseObserver) { + serviceImpl.sayHello(request, responseObserver); + } + }))).build(); + } +} diff --git a/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/Helloworld.java b/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/Helloworld.java new file mode 100644 index 0000000000..28da5a91d3 --- /dev/null +++ b/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/Helloworld.java @@ -0,0 +1,175 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! + +package io.grpc.helloworldexample; + +@SuppressWarnings("hiding") +public interface Helloworld { + + public static final class HelloRequest extends + com.google.protobuf.nano.MessageNano { + + private static volatile HelloRequest[] _emptyArray; + public static HelloRequest[] emptyArray() { + // Lazily initializes the empty array + if (_emptyArray == null) { + synchronized ( + com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) { + if (_emptyArray == null) { + _emptyArray = new HelloRequest[0]; + } + } + } + return _emptyArray; + } + + // optional string name = 1; + public java.lang.String name; + + public HelloRequest() { + clear(); + } + + public HelloRequest clear() { + name = ""; + cachedSize = -1; + return this; + } + + @Override + public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output) + throws java.io.IOException { + if (!this.name.equals("")) { + output.writeString(1, this.name); + } + super.writeTo(output); + } + + @Override + protected int computeSerializedSize() { + int size = super.computeSerializedSize(); + if (!this.name.equals("")) { + size += com.google.protobuf.nano.CodedOutputByteBufferNano + .computeStringSize(1, this.name); + } + return size; + } + + @Override + public HelloRequest mergeFrom( + com.google.protobuf.nano.CodedInputByteBufferNano input) + throws java.io.IOException { + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + return this; + default: { + if (!com.google.protobuf.nano.WireFormatNano.parseUnknownField(input, tag)) { + return this; + } + break; + } + case 10: { + this.name = input.readString(); + break; + } + } + } + } + + public static HelloRequest parseFrom(byte[] data) + throws com.google.protobuf.nano.InvalidProtocolBufferNanoException { + return com.google.protobuf.nano.MessageNano.mergeFrom(new HelloRequest(), data); + } + + public static HelloRequest parseFrom( + com.google.protobuf.nano.CodedInputByteBufferNano input) + throws java.io.IOException { + return new HelloRequest().mergeFrom(input); + } + } + + public static final class HelloReply extends + com.google.protobuf.nano.MessageNano { + + private static volatile HelloReply[] _emptyArray; + public static HelloReply[] emptyArray() { + // Lazily initializes the empty array + if (_emptyArray == null) { + synchronized ( + com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) { + if (_emptyArray == null) { + _emptyArray = new HelloReply[0]; + } + } + } + return _emptyArray; + } + + // optional string message = 1; + public java.lang.String message; + + public HelloReply() { + clear(); + } + + public HelloReply clear() { + message = ""; + cachedSize = -1; + return this; + } + + @Override + public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output) + throws java.io.IOException { + if (!this.message.equals("")) { + output.writeString(1, this.message); + } + super.writeTo(output); + } + + @Override + protected int computeSerializedSize() { + int size = super.computeSerializedSize(); + if (!this.message.equals("")) { + size += com.google.protobuf.nano.CodedOutputByteBufferNano + .computeStringSize(1, this.message); + } + return size; + } + + @Override + public HelloReply mergeFrom( + com.google.protobuf.nano.CodedInputByteBufferNano input) + throws java.io.IOException { + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + return this; + default: { + if (!com.google.protobuf.nano.WireFormatNano.parseUnknownField(input, tag)) { + return this; + } + break; + } + case 10: { + this.message = input.readString(); + break; + } + } + } + } + + public static HelloReply parseFrom(byte[] data) + throws com.google.protobuf.nano.InvalidProtocolBufferNanoException { + return com.google.protobuf.nano.MessageNano.mergeFrom(new HelloReply(), data); + } + + public static HelloReply parseFrom( + com.google.protobuf.nano.CodedInputByteBufferNano input) + throws java.io.IOException { + return new HelloReply().mergeFrom(input); + } + } +}
\ No newline at end of file diff --git a/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/HelloworldActivity.java b/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/HelloworldActivity.java new file mode 100644 index 0000000000..b6d734f9a9 --- /dev/null +++ b/grpc-common/java/android/app/src/main/java/io/grpc/helloworldexample/HelloworldActivity.java @@ -0,0 +1,90 @@ +package io.grpc.helloworldexample; + +import android.content.Context; +import android.os.AsyncTask; +import android.os.Bundle; +import android.support.v7.app.ActionBarActivity; +import android.text.TextUtils; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import java.util.concurrent.TimeUnit; + +import io.grpc.ChannelImpl; +import io.grpc.helloworldexample.Helloworld.HelloReply; +import io.grpc.helloworldexample.Helloworld.HelloRequest; +import io.grpc.transport.okhttp.OkHttpChannelBuilder; + +public class HelloworldActivity extends ActionBarActivity { + private Button mSendButton; + private EditText mHostEdit; + private EditText mPortEdit; + private EditText mMessageEdit; + private TextView mResultText; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_helloworld); + mSendButton = (Button) findViewById(R.id.send_button); + mHostEdit = (EditText) findViewById(R.id.host_edit_text); + mPortEdit = (EditText) findViewById(R.id.port_edit_text); + mMessageEdit = (EditText) findViewById(R.id.message_edit_text); + mResultText = (TextView) findViewById(R.id.grpc_response_text); + } + + public void sendMessage(View view) { + ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)) + .hideSoftInputFromWindow(mHostEdit.getWindowToken(), 0); + mSendButton.setEnabled(false); + new GrpcTask().execute(); + } + + private class GrpcTask extends AsyncTask<Void, Void, String> { + private String mHost; + private String mMessage; + private int mPort; + private ChannelImpl mChannel; + + @Override + protected void onPreExecute() { + mHost = mHostEdit.getText().toString(); + mMessage = mMessageEdit.getText().toString(); + String portStr = mPortEdit.getText().toString(); + mPort = TextUtils.isEmpty(portStr) ? 0 : Integer.valueOf(portStr); + mResultText.setText(""); + } + + private String sayHello(ChannelImpl channel) { + GreeterGrpc.GreeterBlockingStub stub = GreeterGrpc.newBlockingStub(channel); + HelloRequest message = new HelloRequest(); + message.name = mMessage; + HelloReply reply = stub.sayHello(message); + return reply.message; + } + + @Override + protected String doInBackground(Void... nothing) { + try { + mChannel = OkHttpChannelBuilder.forAddress(mHost, mPort).build(); + return sayHello(mChannel); + } catch (Exception e) { + return "Failed... : " + e.getMessage(); + } + } + + @Override + protected void onPostExecute(String result) { + try { + mChannel.shutdown().awaitTerminated(1, TimeUnit.SECONDS); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + mResultText.setText(result); + mSendButton.setEnabled(true); + } + } +}
\ No newline at end of file diff --git a/grpc-common/java/android/app/src/main/res/layout/activity_helloworld.xml b/grpc-common/java/android/app/src/main/res/layout/activity_helloworld.xml new file mode 100644 index 0000000000..00ca04ce65 --- /dev/null +++ b/grpc-common/java/android/app/src/main/res/layout/activity_helloworld.xml @@ -0,0 +1,54 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".MainActivity" + android:orientation="vertical" > + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + <EditText + android:id="@+id/host_edit_text" + android:layout_weight="2" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:hint="Enter Host" /> + <EditText + android:id="@+id/port_edit_text" + android:layout_weight="1" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:inputType="numberDecimal" + android:hint="Enter Port" /> + </LinearLayout> + + + <EditText + android:id="@+id/message_edit_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="Enter message to send" /> + + <Button + android:id="@+id/send_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:onClick="sendMessage" + android:text="Send Grpc Request" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingTop="12dp" + android:paddingBottom="12dp" + android:textSize="16dp" + android:text="Response:" /> + + <TextView + android:id="@+id/grpc_response_text" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:textSize="16dp" /> + +</LinearLayout>
\ No newline at end of file diff --git a/grpc-common/java/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/grpc-common/java/android/app/src/main/res/mipmap-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000000..cde69bccce --- /dev/null +++ b/grpc-common/java/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/grpc-common/java/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/grpc-common/java/android/app/src/main/res/mipmap-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000000..c133a0cbd3 --- /dev/null +++ b/grpc-common/java/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/grpc-common/java/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/grpc-common/java/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000000..bfa42f0e7b --- /dev/null +++ b/grpc-common/java/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/grpc-common/java/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/grpc-common/java/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000000..324e72cdd7 --- /dev/null +++ b/grpc-common/java/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/grpc-common/java/android/app/src/main/res/values/strings.xml b/grpc-common/java/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000000..64cb312d52 --- /dev/null +++ b/grpc-common/java/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ +<resources> + <string name="app_name">GrpcHelloworldExample</string> +</resources> |