Can you provide a complete example? I suspect that WrapHTTPBodyMap doesn't do what you expect it does
On Tue, Jul 26, 2016 at 1:04 PM Abhishek Singh <[email protected]> wrote: > 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 <[email protected]> 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 < > [email protected]> 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 >> [email protected] >> 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 [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > -- > v8-users mailing list > [email protected] > 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 [email protected]. > For more options, visit https://groups.google.com/d/optout. > > -- > -- > v8-users mailing list > [email protected] > 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 [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- v8-users mailing list [email protected] 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
