Would you mind guiding me a bit here? For now just trying to expose nested “body” map i.e. to allow something like “response.body.result = dbQueryResult"
First is the Set interceptor for “response” (C++ object) and here I’m setting up “body” (C++ object for “body”) & setting return value to “body” object. Second one is Set interceptor for “body” void HTTPResponse::HTTPResponseSet(Local<Name> name, Local<Value> value_obj, const PropertyCallbackInfo<Value>& info) { if (name->IsSymbol()) return; V8Handle* w = UnwrapV8HandleInstance(info.Holder()); HTTPBody* body = new HTTPBody(w); Local<Object> body_map = body->WrapHTTPBodyMap(); info.GetReturnValue().Set(body_map); } void HTTPBody::HTTPBodySet(Local<Name> name, Local<Value> value_obj, const PropertyCallbackInfo<Value>& info) { if (name->IsSymbol()) return; string key = ObjectToString(Local<String>::Cast(name)); string value = ToString(info.GetIsolate(), value_obj); map<string, string>* body = UnwrapMap(info.Holder()); (*body)[key] = value; cout << "body field " << value << endl; } Currently I’m not hitting Set interceptor of “body” object, I suppose I’m doing something wrong here. > On 25-Jul-2016, at 10:00 PM, Jochen Eisinger <joc...@chromium.org> wrote: > > To create dynamic nested maps from C++, the outter object (response) would > have to return another intercepted object (e.g. body) that then returns the > actual values on access. > > On Fri, Jul 22, 2016 at 8:12 AM Abhishek Singh <singhabhishek....@gmail.com > <mailto:singhabhishek....@gmail.com>> wrote: > Hi, > > I’m wondering if there is a way to expose map<string, map<string, string> > > into JS world from C++? Exposing map<string, string> looks straightforward > and I’m doing for some C++ objects using NamedPropertyConfigurationHandler. > I’ll just show sample JS code that I would like to have and where C++ > map<string, map<string, string> > will come into picture: > > function OnHTTPGet(request, response) { > > var city = “BLR”; > var limit = “10”; > > var queryResult = dbCal(“select * from users where city=${city} limit > ${limit}”); > > // This works for me presently > /* response.data = queryResult; > response.status_code = 200; */ > > // What I would like to have > response.body.data = queryResult; > response.header.status_code = 200; > } > > “request” - native HTTP request JSON passed from C++ V8 binding as args to JS > function > “response” - C++ based HTTP object exposed with Setter callback set using > NamedPropertyConfigHandler and this what I write back to user who made the > “request" > > I basically want to set HTTP response body and header transparently, which > would require me to expose C++ HTTP object probably as a map<string, > map<string, string> >. Hope my question is clear, please let me know if there > a way to do this? > > Thanks, > Abhishek > > -- > -- > v8-users mailing list > v8-users@googlegroups.com <mailto:v8-users@googlegroups.com> > http://groups.google.com/group/v8-users > <http://groups.google.com/group/v8-users> > --- > You received this message because you are subscribed to the Google Groups > "v8-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to v8-users+unsubscr...@googlegroups.com > <mailto:v8-users%2bunsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > -- > -- > v8-users mailing list > v8-users@googlegroups.com > http://groups.google.com/group/v8-users > <http://groups.google.com/group/v8-users> > --- > You received this message because you are subscribed to the Google Groups > "v8-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to v8-users+unsubscr...@googlegroups.com > <mailto:v8-users+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.