result_t SslServer::create(v8::Local<v8::Array> certs, exlib::string addr, int32_t port, v8::Local<v8::Value> listener) { result_t hr; obj_ptr<TcpServer_base> _server; obj_ptr<SslHandler_base> _handler; hr = SslHandler_base::_new(certs, listener, _handler); if (hr < 0) return hr; hr = TcpServer_base::_new(addr, port, _handler->wrap(), _server); if (hr < 0) return hr; m_server = _server; v8::Local<v8::Object> o = wrap(); Isolate* isolate = holder(); isolate->SetPrivate(o, "handler", _handler->wrap()); isolate->SetPrivate(o, "server", _server->wrap()); return 0; }
result_t process_base::get_env(v8::Local<v8::Object>& retVal) { Isolate* isolate = Isolate::current(); v8::Local<v8::Object> glob = v8::Local<v8::Object>::New(isolate->m_isolate, isolate->m_global); v8::Local<v8::Value> ev = isolate->GetPrivate(glob, "_env"); if (ev->IsUndefined()) { v8::Local<v8::Object> o = v8::Object::New(isolate->m_isolate); char** env = environ; const char *p, *p1; while ((p = *env++) != NULL) { p1 = qstrchr(p, '='); if (p1) o->Set(isolate->NewFromUtf8(p, (int32_t)(p1 - p)), isolate->NewFromUtf8(p1 + 1)); } isolate->SetPrivate(glob, "_env", o); retVal = o; } else retVal = v8::Local<v8::Object>::Cast(ev); return 0; }