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.

Reply via email to