Skip to content
Snippets Groups Projects
Commit 8302b123 authored by Nicolas "Pixel" Noble's avatar Nicolas "Pixel" Noble
Browse files

Merge branch 'v1.0.x' into manual-upmerge

Conflicts:
	src/ruby/pb/test/client.rb
	src/ruby/pb/test/server.rb
	tools/dockerfile/test/php7_jessie_x64/Dockerfile
parents c70f2f76 531c9090
No related branches found
No related tags found
No related merge requests found
Showing
with 86 additions and 31 deletions
...@@ -2,9 +2,39 @@ ...@@ -2,9 +2,39 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>AD_UNIT_ID_FOR_BANNER_TEST</key>
<string>redacted</string>
<key>AD_UNIT_ID_FOR_INTERSTITIAL_TEST</key>
<string>redacted</string>
<key>CLIENT_ID</key> <key>CLIENT_ID</key>
<string>15087385131-lh9bpkiai9nls53uadju0if6k7un3uih.apps.googleusercontent.com</string> <string>15087385131-lh9bpkiai9nls53uadju0if6k7un3uih.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key> <key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.15087385131-lh9bpkiai9nls53uadju0if6k7un3uih</string> <string>com.googleusercontent.apps.15087385131-lh9bpkiai9nls53uadju0if6k7un3uih</string>
<key>API_KEY</key>
<string>redacted</string>
<key>GCM_SENDER_ID</key>
<string>redacted</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>io.grpc.AuthSample</string>
<key>PROJECT_ID</key>
<string>grpc-authsample</string>
<key>STORAGE_BUCKET</key>
<string>grpc-authsample.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false/>
<key>IS_ANALYTICS_ENABLED</key>
<false/>
<key>IS_APPINVITE_ENABLED</key>
<false/>
<key>IS_GCM_ENABLED</key>
<false/>
<key>IS_SIGNIN_ENABLED</key>
<true/>
<key>GOOGLE_APP_ID</key>
<string>1:15087385131:ios:d547168abe3c362f</string>
<key>DATABASE_URL</key>
<string>https://grpc-authsample.firebaseio.com</string>
</dict> </dict>
</plist> </plist>
\ No newline at end of file
...@@ -48,7 +48,7 @@ inline bool ServicesFilename(const grpc::protobuf::FileDescriptor *file, ...@@ -48,7 +48,7 @@ inline bool ServicesFilename(const grpc::protobuf::FileDescriptor *file,
file->name().find_last_of(".proto") == file->name().size() - 1) { file->name().find_last_of(".proto") == file->name().size() - 1) {
*file_name_or_error = *file_name_or_error =
file->name().substr(0, file->name().size() - proto_suffix_length) + file->name().substr(0, file->name().size() - proto_suffix_length) +
"_services.rb"; "_services_pb.rb";
return true; return true;
} else { } else {
*file_name_or_error = "Invalid proto file name: must end with .proto"; *file_name_or_error = "Invalid proto file name: must end with .proto";
...@@ -58,7 +58,7 @@ inline bool ServicesFilename(const grpc::protobuf::FileDescriptor *file, ...@@ -58,7 +58,7 @@ inline bool ServicesFilename(const grpc::protobuf::FileDescriptor *file,
inline grpc::string MessagesRequireName( inline grpc::string MessagesRequireName(
const grpc::protobuf::FileDescriptor *file) { const grpc::protobuf::FileDescriptor *file) {
return Replace(file->name(), ".proto", ""); return Replace(file->name(), ".proto", "_pb");
} }
// Get leading or trailing comments in a string. Comment lines start with "# ". // Get leading or trailing comments in a string. Comment lines start with "# ".
......
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NUnit.ConsoleRunner" version="3.2.0" />
<package id="OpenCover" version="4.6.519" />
<package id="ReportGenerator" version="2.4.4.0" />
</packages>
\ No newline at end of file
...@@ -4,4 +4,7 @@ ...@@ -4,4 +4,7 @@
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" /> <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
<package id="NUnit" version="3.2.0" targetFramework="net45" /> <package id="NUnit" version="3.2.0" targetFramework="net45" />
<package id="NUnitLite" version="3.2.0" targetFramework="net45" /> <package id="NUnitLite" version="3.2.0" targetFramework="net45" />
</packages> <package id="NUnit.ConsoleRunner" version="3.2.0" />
\ No newline at end of file <package id="OpenCover" version="4.6.519" />
<package id="ReportGenerator" version="2.4.4.0" />
</packages>
...@@ -54,7 +54,10 @@ ...@@ -54,7 +54,10 @@
}, },
"Newtonsoft.Json": "8.0.3", "Newtonsoft.Json": "8.0.3",
"NUnit": "3.2.0", "NUnit": "3.2.0",
"NUnitLite": "3.2.0-*" "NUnitLite": "3.2.0-*",
"NUnit.ConsoleRunner": "3.2.0",
"OpenCover": "4.6.519",
"ReportGenerator": "2.4.4.0"
}, },
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
......
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>
...@@ -68,6 +68,8 @@ using v8::Value; ...@@ -68,6 +68,8 @@ using v8::Value;
Nan::Callback *CallCredentials::constructor; Nan::Callback *CallCredentials::constructor;
Persistent<FunctionTemplate> CallCredentials::fun_tpl; Persistent<FunctionTemplate> CallCredentials::fun_tpl;
static Callback *plugin_callback;
CallCredentials::CallCredentials(grpc_call_credentials *credentials) CallCredentials::CallCredentials(grpc_call_credentials *credentials)
: wrapped_credentials(credentials) {} : wrapped_credentials(credentials) {}
...@@ -88,6 +90,11 @@ void CallCredentials::Init(Local<Object> exports) { ...@@ -88,6 +90,11 @@ void CallCredentials::Init(Local<Object> exports) {
Nan::New<FunctionTemplate>(CreateFromPlugin)).ToLocalChecked()); Nan::New<FunctionTemplate>(CreateFromPlugin)).ToLocalChecked());
Nan::Set(exports, Nan::New("CallCredentials").ToLocalChecked(), ctr); Nan::Set(exports, Nan::New("CallCredentials").ToLocalChecked(), ctr);
constructor = new Nan::Callback(ctr); constructor = new Nan::Callback(ctr);
Local<FunctionTemplate> callback_tpl =
Nan::New<FunctionTemplate>(PluginCallback);
plugin_callback = new Callback(
Nan::GetFunction(callback_tpl).ToLocalChecked());
} }
bool CallCredentials::HasInstance(Local<Value> val) { bool CallCredentials::HasInstance(Local<Value> val) {
...@@ -195,23 +202,28 @@ NAN_METHOD(PluginCallback) { ...@@ -195,23 +202,28 @@ NAN_METHOD(PluginCallback) {
return Nan::ThrowTypeError( return Nan::ThrowTypeError(
"The callback's third argument must be an object"); "The callback's third argument must be an object");
} }
if (!info[3]->IsObject()) {
return Nan::ThrowTypeError(
"The callback's fourth argument must be an object");
}
shared_ptr<Resources> resources(new Resources); shared_ptr<Resources> resources(new Resources);
grpc_status_code code = static_cast<grpc_status_code>( grpc_status_code code = static_cast<grpc_status_code>(
Nan::To<uint32_t>(info[0]).FromJust()); Nan::To<uint32_t>(info[0]).FromJust());
Utf8String details_utf8_str(info[1]); Utf8String details_utf8_str(info[1]);
char *details = *details_utf8_str; char *details = *details_utf8_str;
grpc_metadata_array array; grpc_metadata_array array;
Local<Object> callback_data = Nan::To<Object>(info[3]).ToLocalChecked();
if (!CreateMetadataArray(Nan::To<Object>(info[2]).ToLocalChecked(), if (!CreateMetadataArray(Nan::To<Object>(info[2]).ToLocalChecked(),
&array, resources)){ &array, resources)){
return Nan::ThrowError("Failed to parse metadata"); return Nan::ThrowError("Failed to parse metadata");
} }
grpc_credentials_plugin_metadata_cb cb = grpc_credentials_plugin_metadata_cb cb =
reinterpret_cast<grpc_credentials_plugin_metadata_cb>( reinterpret_cast<grpc_credentials_plugin_metadata_cb>(
Nan::Get(info.Callee(), Nan::Get(callback_data,
Nan::New("cb").ToLocalChecked() Nan::New("cb").ToLocalChecked()
).ToLocalChecked().As<External>()->Value()); ).ToLocalChecked().As<External>()->Value());
void *user_data = void *user_data =
Nan::Get(info.Callee(), Nan::Get(callback_data,
Nan::New("user_data").ToLocalChecked() Nan::New("user_data").ToLocalChecked()
).ToLocalChecked().As<External>()->Value(); ).ToLocalChecked().As<External>()->Value();
cb(user_data, array.metadata, array.count, code, details); cb(user_data, array.metadata, array.count, code, details);
...@@ -227,17 +239,17 @@ NAUV_WORK_CB(SendPluginCallback) { ...@@ -227,17 +239,17 @@ NAUV_WORK_CB(SendPluginCallback) {
while (!callbacks.empty()) { while (!callbacks.empty()) {
plugin_callback_data *data = callbacks.front(); plugin_callback_data *data = callbacks.front();
callbacks.pop_front(); callbacks.pop_front();
// Attach cb and user_data to plugin_callback so that it can access them later Local<Object> callback_data = Nan::New<Object>();
v8::Local<v8::Function> plugin_callback = Nan::GetFunction( Nan::Set(callback_data, Nan::New("cb").ToLocalChecked(),
Nan::New<v8::FunctionTemplate>(PluginCallback)).ToLocalChecked();
Nan::Set(plugin_callback, Nan::New("cb").ToLocalChecked(),
Nan::New<v8::External>(reinterpret_cast<void*>(data->cb))); Nan::New<v8::External>(reinterpret_cast<void*>(data->cb)));
Nan::Set(plugin_callback, Nan::New("user_data").ToLocalChecked(), Nan::Set(callback_data, Nan::New("user_data").ToLocalChecked(),
Nan::New<v8::External>(data->user_data)); Nan::New<v8::External>(data->user_data));
const int argc = 2; const int argc = 3;
v8::Local<v8::Value> argv[argc] = { v8::Local<v8::Value> argv[argc] = {
Nan::New(data->service_url).ToLocalChecked(), Nan::New(data->service_url).ToLocalChecked(),
plugin_callback callback_data,
// Get Local<Function> from Nan::Callback*
**plugin_callback
}; };
Nan::Callback *callback = state->callback; Nan::Callback *callback = state->callback;
callback->Call(argc, argv); callback->Call(argc, argv);
......
...@@ -19,11 +19,11 @@ ...@@ -19,11 +19,11 @@
"lodash": "^3.9.3", "lodash": "^3.9.3",
"google-protobuf": "^3.0.0-alpha.5" "google-protobuf": "^3.0.0-alpha.5"
}, },
"files": { "files": [
"LICENSE", "LICENSE",
"health.js", "health.js",
"v1" "v1"
}, ],
"main": "src/node/index.js", "main": "src/node/index.js",
"license": "BSD-3-Clause" "license": "BSD-3-Clause"
} }
...@@ -92,7 +92,8 @@ exports.createSsl = ChannelCredentials.createSsl; ...@@ -92,7 +92,8 @@ exports.createSsl = ChannelCredentials.createSsl;
* @return {CallCredentials} The credentials object * @return {CallCredentials} The credentials object
*/ */
exports.createFromMetadataGenerator = function(metadata_generator) { exports.createFromMetadataGenerator = function(metadata_generator) {
return CallCredentials.createFromPlugin(function(service_url, callback) { return CallCredentials.createFromPlugin(function(service_url, cb_data,
callback) {
metadata_generator({service_url: service_url}, function(error, metadata) { metadata_generator({service_url: service_url}, function(error, metadata) {
var code = grpc.status.OK; var code = grpc.status.OK;
var message = ''; var message = '';
...@@ -107,7 +108,7 @@ exports.createFromMetadataGenerator = function(metadata_generator) { ...@@ -107,7 +108,7 @@ exports.createFromMetadataGenerator = function(metadata_generator) {
metadata = new Metadata(); metadata = new Metadata();
} }
} }
callback(code, message, metadata._getCoreRepresentation()); callback(code, message, metadata._getCoreRepresentation(), cb_data);
}); });
}); });
}; };
......
...@@ -5,8 +5,8 @@ inherit_from: .rubocop_todo.yml ...@@ -5,8 +5,8 @@ inherit_from: .rubocop_todo.yml
AllCops: AllCops:
Exclude: Exclude:
- 'bin/apis/**/*' - 'bin/apis/**/*'
- 'bin/math.rb' - 'bin/math_pb.rb'
- 'bin/math_services.rb' - 'bin/math_services_pb.rb'
- 'pb/grpc/health/v1/*' - 'pb/grpc/health/v1/*'
- 'pb/test/**/*' - 'pb/test/**/*'
......
...@@ -40,7 +40,7 @@ $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir) ...@@ -40,7 +40,7 @@ $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) $LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
require 'grpc' require 'grpc'
require 'math_services' require 'math_services_pb'
require 'optparse' require 'optparse'
include GRPC::Core::TimeConsts include GRPC::Core::TimeConsts
......
File moved
...@@ -42,7 +42,7 @@ $LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) ...@@ -42,7 +42,7 @@ $LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
require 'forwardable' require 'forwardable'
require 'grpc' require 'grpc'
require 'logger' require 'logger'
require 'math_services' require 'math_services_pb'
require 'optparse' require 'optparse'
# RubyLogger defines a logger for gRPC based on the standard ruby logger. # RubyLogger defines a logger for gRPC based on the standard ruby logger.
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
# #
require 'grpc' require 'grpc'
require 'math' require 'math_pb'
module Math module Math
module Math module Math
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
require 'grpc' require 'grpc'
require 'grpc/health/v1/health_services' require 'grpc/health/v1/health_services_pb'
require 'thread' require 'thread'
module Grpc module Grpc
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
# #
require 'grpc' require 'grpc'
require 'grpc/health/v1/health' require 'grpc/health/v1/health_pb'
module Grpc module Grpc
module Health module Health
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment