google V8引擎的示例代码process.cc,核心类是JsHttpRequestProcessor。
Initialize()函数完成以下功能:
- 设置全局javascript日志函数log的C++实现(155行)
- InstallMaps中将C++ map<string, string>的options(602行)和output(616行)作为js全局变量options(236行)和output(239行)
- 编译和运行js脚本(175行)
- 获取js Process函数的句柄(192行)。
Process()函数具体处理请求:
- 将C++的request对象转化为js对象(254行)
- 调用js的Process函数(263行)。
其他函数功能如下:
- Wrap函数将C++对象转化为js对象,UnWrap从js对象中获取C++对象。
- MapGet和MapSet用于拦截器(Interceptors)方式设置js ObjectTemplate。
- GetPath等用于访问器(Accessors)方式设置js ObejctTemplate。
- MakeXXXTemplate创建js ObjectTemplate,注意只需创建一次可反复实例化。
其他的都是测试Stub,不再记录。