mirror of https://github.com/grpc/grpc.git
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
https://grpc.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.2 KiB
93 lines
3.2 KiB
package io.grpc.helloworldexample; |
|
|
|
import android.content.Context; |
|
import android.support.v7.app.ActionBarActivity; |
|
import android.os.Bundle; |
|
import android.os.AsyncTask; |
|
import android.text.TextUtils; |
|
import android.view.Menu; |
|
import android.view.MenuItem; |
|
import android.view.View; |
|
import android.view.inputmethod.InputMethodManager; |
|
import android.widget.Button; |
|
import android.widget.EditText; |
|
import android.widget.TextView; |
|
|
|
import io.grpc.ChannelImpl; |
|
import io.grpc.examples.GreeterGrpc; |
|
import io.grpc.examples.Helloworld.HelloRequest; |
|
import io.grpc.examples.Helloworld.HelloReply; |
|
import io.grpc.transport.okhttp.OkHttpChannelBuilder; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
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); |
|
} |
|
} |
|
}
|
|
|