Index: third_party/liblouis/nacl_wrapper/liblouis_instance.h |
diff --git a/third_party/liblouis/nacl_wrapper/liblouis_instance.h b/third_party/liblouis/nacl_wrapper/liblouis_instance.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d202a7681d776f5f340dc626c2f87fb304bea321 |
--- /dev/null |
+++ b/third_party/liblouis/nacl_wrapper/liblouis_instance.h |
@@ -0,0 +1,92 @@ |
+// Copyright 2013 Google Inc. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not |
+// use this file except in compliance with the License. You may obtain a copy of |
+// the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
+// License for the specific language governing permissions and limitations under |
+// the License. |
+ |
+#ifndef LIBLOUIS_NACL_LIBLOUIS_INSTANCE_H_ |
+#define LIBLOUIS_NACL_LIBLOUIS_INSTANCE_H_ |
+ |
+#include <string> |
+ |
+#include "base/basictypes.h" |
+#include "json/json.h" |
+#include "liblouis_wrapper.h" |
+#include "ppapi/c/pp_instance.h" |
+#include "ppapi/cpp/completion_callback.h" |
+#include "ppapi/cpp/instance.h" |
+#include "ppapi/cpp/message_loop.h" |
+#include "ppapi/cpp/var.h" |
+#include "ppapi/utility/completion_callback_factory.h" |
+#include "ppapi/utility/threading/simple_thread.h" |
+#include "translation_params.h" |
+ |
+namespace liblouis_nacl { |
+ |
+class LibLouisInstance : public pp::Instance { |
+ public: |
+ explicit LibLouisInstance(PP_Instance instance); |
+ virtual ~LibLouisInstance(); |
+ |
+ virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]); |
+ virtual void HandleMessage(const pp::Var& var_message); |
+ |
+ private: |
+ // Post work to the background (liblouis) thread. |
+ int32_t PostWorkToBackground(const pp::CompletionCallback& callback) { |
+ return liblouis_thread_.message_loop().PostWork(callback); |
+ } |
+ |
+ // Encodes a message as JSON and sends it over to JavaScript. |
+ void PostReply(Json::Value reply, const std::string& in_reply_to); |
+ |
+ // Posts an error response to JavaScript. |
+ void PostError(const std::string& error); |
+ |
+ // Posts an error response to JavaScript, with the message ID of the call |
+ // which caused it. |
+ void PostError(const std::string& error, const std::string& in_reply_to); |
+ |
+ // Parses and executes a table check command. |
+ void HandleCheckTable(const Json::Value& message, |
+ const std::string& message_id); |
+ |
+ // Called to check a table on a background thread. |
+ void CheckTableInBackground(int32_t result, const std::string& table_name, |
+ const std::string& message_id); |
+ |
+ // Parses and executes a translation command. |
+ void HandleTranslate(const Json::Value& message, |
+ const std::string& message_id); |
+ |
+ // Called to translate text on a background thread. |
+ void TranslateInBackground(int32_t result, const TranslationParams& params, |
+ const std::string& message_id); |
+ |
+ // Parses and executes a back translation command. |
+ void HandleBackTranslate(const Json::Value& message, |
+ const std::string& message_id); |
+ |
+ // Called to back-translate text on a background thread. |
+ void BackTranslateInBackground(int32_t result, |
+ const std::string& table_name, const std::vector<unsigned char>& cells, |
+ const std::string& message_id); |
+ |
+ LibLouisWrapper liblouis_; |
+ pp::SimpleThread liblouis_thread_; |
+ pp::CompletionCallbackFactory<LibLouisInstance> cc_factory_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(LibLouisInstance); |
+}; |
+ |
+} // namespace liblouis_nacl |
+ |
+#endif // LIBLOUIS_NACL_LIBLOUIS_INSTANCE_H_ |