Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: native_client_sdk/src/examples/api/vpn_provider/vpn_provider.cc

Issue 1307173009: rebased ppapi vpnProvider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkcr
Patch Set: fix compile Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/examples/api/vpn_provider/vpn_provider.cc
diff --git a/native_client_sdk/src/examples/api/vpn_provider/vpn_provider.cc b/native_client_sdk/src/examples/api/vpn_provider/vpn_provider.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bcf786ee3ec9bafc5285c45fab27e6e9ffb6816d
--- /dev/null
+++ b/native_client_sdk/src/examples/api/vpn_provider/vpn_provider.cc
@@ -0,0 +1,246 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <time.h>
+#include <iostream>
+#include "ppapi/cpp/instance.h"
+#include "ppapi/cpp/module.h"
+#include "ppapi/cpp/var.h"
+#include "ppapi/cpp/var_dictionary.h"
+#include "ppapi/cpp/vpn_provider.h"
+#include "ppapi/utility/completion_callback_factory.h"
+
+namespace {
+
+// The expected string sent by the browser.
+const char* const kHelloString = "hello";
+const char* const kByeString = "bye";
+// The string sent back to the browser upon receipt of a message
+// containing "hello".
+const char* const kHelloReplyString = "hello from NaCl";
+const char* const kByeReplyString = "bye from NaCl";
+
+} // namespace
+
+class HelloTutorialInstance : public pp::Instance {
+ public:
+ explicit HelloTutorialInstance(PP_Instance instance)
+ : pp::Instance(instance), factory_(this) {
+ vpn_ = new pp::VpnProvider(this);
+
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::HelloTutorialInstance ()" << std::endl;
+
+ // Initial Callaback registration
+ vpn_->GetPlatformMessage(factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::GetPlatformMessageCompletionCallback));
+
+ vpn_->GetPacket(factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::GetPacketCompletionCallback));
+
+ vpn_->GetConfigMessage(factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::GetConfigMessageCompletionCallback));
+
+ vpn_->GetUIMessage(factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::GetUIMessageCompletionCallback));
+ }
+
+ virtual ~HelloTutorialInstance() {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::~HelloTutorialInstance ()"
+ << std::endl;
+ delete vpn_;
+ vpn_ = nullptr;
+ }
+
+ // Handles On Click messages from Javascript
+ virtual void HandleMessage(const pp::Var& var_message) {
+ // Ignore the message if it is not a string.
+ if (!var_message.is_string())
+ return;
+
+ // Get the string message and compare it to "hello".
+ std::string message = var_message.AsString();
+ if (message == kHelloString) {
+ config = "Adrian";
+ AppendServiceIDTimeStamp(config);
+ vpn_->CreateConfig(
+ config, factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::CreateConfigCompletionCallback));
+
+ // If it matches, send our response back to JavaScript.
+ pp::Var var_reply(kHelloReplyString);
+ PostMessage(var_reply);
+ }
+
+ if (message == kByeString) {
+ vpn_->DestroyConfig(
+ config, factory_.NewCallback(
+ &HelloTutorialInstance::DestroyConfigCompletionCallback));
+
+ // If it matches, send our response back to JavaScript.
+ pp::Var var_reply(kByeReplyString);
+ PostMessage(var_reply);
+ }
+ }
+
+ void AppendServiceIDTimeStamp(std::string& service_id) {
+ char time_string[20] = "YYYYMMDDhhmmss";
+ time_t t = time(NULL);
+ strftime(time_string, sizeof(time_string), "%Y%m%d%H%M%S", localtime(&t));
+ time_string[sizeof(time_string) - 1] = '\0';
+ service_id.append(time_string);
+ }
+
+ void CreateConfigCompletionCallback(int32_t result, pp::Var id) {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::CreateConfigCompletionCallback ("
+ << result << ", " << id.AsString() << ")" << std::endl;
+ }
+
+ void DestroyConfigCompletionCallback(int32_t result) {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::DestroyConfigCompletionCallback ("
+ << result << ")" << std::endl;
+ }
+ void SendStateChangeNotificationCallback(int32_t result) {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::SendStateChangeNotificationCallback ("
+ << result << ")" << std::endl;
+ }
+
+ void GetPlatformMessageCompletionCallback(int32_t result,
+ const pp::Var& message) {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::GetPlatformMessageCompletionCallback ("
+ << result << ")" << std::endl;
+
+ pp::VarDictionary dict(message);
+ std::cerr << "VPN Provider NaCL: "
+ << "Received OnPlatformMessage ("
+ << dict.Get(pp::Var("id")).AsString() << ", "
+ << dict.Get(pp::Var("message")).AsInt() << ", "
+ << dict.Get(pp::Var("error")).AsString() << ", "
+ << ")" << std::endl;
+
+ if (dict.Get(pp::Var("message")).AsInt() ==
+ PP_VPN_PROVIDER_PLATFORM_MESSAGE_CONNECTED) {
+ std::vector<std::string> exclusionList;
+ exclusionList.push_back(std::string("63.145.213.129/32"));
+ exclusionList.push_back(std::string("63.145.212.0/24"));
+
+ std::vector<std::string> inclusionList;
+ inclusionList.push_back("0.0.0.0/0");
+ inclusionList.push_back("63.145.212.128/25");
+
+ std::vector<std::string> domainSearch;
+ domainSearch.push_back("foo:bar");
+
+ std::vector<std::string> dnsServers;
+ dnsServers.push_back("8.8.8.8");
+
+ std::cerr
+ << "VPN Provider NaCL: SetParameters: "
+ << vpn_->SetParameters(
+ "10.10.10.10/24", "10.10.10.255", 1600, exclusionList,
+ inclusionList, domainSearch, dnsServers,
+ factory_.NewCallback(
+ &HelloTutorialInstance::SetParametersCompletionCallback))
+ << std::endl;
+ }
+
+ // Re-register callback
+ if (result == PP_OK) {
+ vpn_->GetPlatformMessage(factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::GetPlatformMessageCompletionCallback));
+ }
+ }
+
+ void SetParametersCompletionCallback(int32_t result) {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::SetParametersCompletionCallback ("
+ << result << ")" << std::endl;
+
+ vpn_->NotifyConnectionStateChanged(
+ PP_VPN_PROVIDER_CONNECTION_STATE_CONNECTED,
+ factory_.NewCallback(
+ &HelloTutorialInstance::SendStateChangeNotificationCallback));
+ }
+
+ void GetPacketCompletionCallback(int32_t result, const pp::Var packet) {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::GetPacketCompletionCallback ("
+ << result << ")" << std::endl;
+
+ // "Null Proxy" implementation
+ vpn_->SendPacket(packet);
+
+ // Re-register callback
+ if (result == PP_OK) {
+ vpn_->GetPacket(factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::GetPacketCompletionCallback));
+ }
+ }
+
+ void GetConfigMessageCompletionCallback(int32_t result,
+ const pp::Var& message) {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::GetConfigMessageCompletionCallback ("
+ << result << ")" << std::endl;
+
+ pp::VarDictionary dict(message);
+ std::cerr << "VPN Provider NaCL: "
+ << "Received OnConfigMessage ("
+ << dict.Get(pp::Var("id")).AsString() << ", "
+ << dict.Get(pp::Var("message")).AsInt() << ", "
+ << dict.Get(pp::Var("name")).AsString() << ", "
+ << dict.Get(pp::Var("data")).AsString() << ")" << std::endl;
+
+ // Re-register callback
+ if (result == PP_OK) {
+ vpn_->GetConfigMessage(factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::GetConfigMessageCompletionCallback));
+ }
+ }
+
+ void GetUIMessageCompletionCallback(int32_t result, const pp::Var& message) {
+ std::cerr << "VPN Provider NaCL: "
+ << "HelloTutorialInstance::GetUIMessageCompletionCallback ("
+ << result << ")" << std::endl;
+
+ pp::VarDictionary dict(message);
+ std::cerr << "VPN Provider NaCL: "
+ << "Received OnUIMessage ("
+ << dict.Get(pp::Var("message")).AsInt() << ", "
+ << dict.Get(pp::Var("id")).AsString() << ")" << std::endl;
+
+ // Re-register callback
+ if (result == PP_OK) {
+ vpn_->GetUIMessage(factory_.NewCallbackWithOutput(
+ &HelloTutorialInstance::GetUIMessageCompletionCallback));
+ }
+ }
+
+ std::string config;
+ pp::VpnProvider* vpn_;
+ pp::CompletionCallbackFactory<HelloTutorialInstance> factory_;
+};
+
+class HelloTutorialModule : public pp::Module {
+ public:
+ HelloTutorialModule() : pp::Module() {}
+ virtual ~HelloTutorialModule() {}
+
+ virtual pp::Instance* CreateInstance(PP_Instance instance) {
+ return new HelloTutorialInstance(instance);
+ }
+};
+
+namespace pp {
+
+Module* CreateModule() {
+ return new HelloTutorialModule();
+}
+
+} // namespace pp
« no previous file with comments | « native_client_sdk/src/examples/api/vpn_provider/index.html ('k') | native_client_sdk/src/libraries/ppapi/library.dsc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698