Index: experimental/hex/hex_instance.h |
diff --git a/experimental/hex/hex_instance.h b/experimental/hex/hex_instance.h |
deleted file mode 100644 |
index 0031a1dbfca54df6b121fef3fb14f1d50491492e..0000000000000000000000000000000000000000 |
--- a/experimental/hex/hex_instance.h |
+++ /dev/null |
@@ -1,139 +0,0 @@ |
-// Copyright (c) 2011 The Native Client SDK Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can |
-// be found in the LICENSE file. |
- |
-/// @file |
-/// This example demonstrates loading, running and scripting a very simple NaCl |
-/// module. To load the NaCl module, the browser first looks for the |
-/// CreateModule() factory method (at the end of this file). It calls |
-/// CreateModule() once to load the module code from your .nexe. After the |
-/// .nexe code is loaded, CreateModule() is not called again. |
-/// |
-/// Once the .nexe code is loaded, the browser then calls the |
-/// HexGameModule::CreateInstance() |
-/// method on the object returned by CreateModule(). It calls CreateInstance() |
-/// each time it encounters an <embed> tag that references your NaCl module. |
-/// |
- |
-// C headers |
-#include <string.h> |
- |
-// C++ headers |
-#include <algorithm> |
-#include <cassert> |
-#include <cstdio> |
-#include <cstdlib> |
-#include <ctime> |
-#include <iostream> |
-#include <iterator> |
-#include <map> |
-#include <set> |
-#include <sstream> |
-#include <string> |
-#include <vector> |
- |
-#include "ppapi/cpp/completion_callback.h" |
-#include "ppapi/cpp/instance.h" |
-#include "ppapi/cpp/module.h" |
-#include "ppapi/cpp/var.h" |
- |
-#include "shared_queue.h" |
-#include "thread_condition.h" |
- |
- |
-namespace hexgame { |
- |
-struct UserMove { |
- UserMove(int c, int r) : column_(c), row_(r) {} |
- int column_; |
- int row_; |
-}; |
-void UpdateCallback(void* data, int32_t /*result*/); |
- |
-/// The Instance class. One of these exists for each instance of your NaCl |
-/// module on the web page. The browser will ask the Module object to create |
-/// a new Instance for each occurrence of the <embed> tag that has these |
-/// attributes: |
-/// <pre> |
-/// type="application/x-ppapi-nacl-srpc" |
-/// nexes="ARM: hello_world_arm.nexe |
-/// x86-32: hello_world_x86_32.nexe |
-/// x86-64: hello_world_x86_64.nexe" |
-/// </pre> |
-/// The Instance can return a subclass of pp::Instance. When the |
-/// browser encounters JavaScript that wants to access the Instance, it calls |
-/// the GetInstanceObject() method. |
-class HexGameInstance : public pp::Instance { |
- public: |
- explicit HexGameInstance(PP_Instance instance) : |
- pp::Instance(instance), compute_pi_thread_(0), cond_true_(false), |
- computer_wins_(false), user_wins_(false), last_move_was_invalid_(false), |
- game_loop_ready_(false), sent_game_loop_ready_(false) {} |
- virtual ~HexGameInstance() {} |
- |
- /// Called by the browser to handle the postMessage() call in Javascript. |
- /// Detects which method is being called from the message contents, and |
- /// calls the appropriate function. Posts the result back to the browser |
- /// asynchronously. |
- /// @param[in] var_message The message posted by the browser. |
- /// Currently, the only message is USERMOVE followed by row and then |
- /// by column. |
- virtual void HandleMessage(const pp::Var& var_message); |
- |
- virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]); |
- |
- // Return an event from the thread-safe queue, waiting for a new event |
- // to occur if the queue is empty. Set |was_queue_cancelled| to indicate |
- // whether the queue was cancelled. If it was cancelled, then the |
- const UserMove GetEventFromQueue(bool *was_queue_cancelled); |
- |
- void WaitForUserMove(uint32_t* user_col, uint32_t* user_row); |
- void GameOver(); |
- void SendStatusToBrowser(); |
- void SetComputerMove(uint32_t col, uint32_t row); |
- |
- // This indicates the game loop has initialized and is ready |
- // for the UI |
- void SetGameLoopReady() { game_loop_ready_ = true;} |
- |
- void SetComputerWins() { computer_wins_ = true;} |
- void SetUserWins() { user_wins_ = true;} |
- void SetValidMove() { last_move_was_invalid_ = false; } |
- void SetInvalidMove() { last_move_was_invalid_ = true; } |
- |
- private: |
- pthread_t compute_pi_thread_; |
- c_salt::threading::ThreadCondition thread_condition_; |
- bool cond_true_; |
- |
- LockingQueue<UserMove> event_queue_; |
- |
- uint32_t user_column_, user_row_; |
- uint32_t computer_column_, computer_row_; |
- bool computer_wins_; |
- bool user_wins_; |
- bool last_move_was_invalid_; |
- bool game_loop_ready_; |
- bool sent_game_loop_ready_; |
-}; |
- |
-/// The Module class. The browser calls the CreateInstance() method to create |
-/// an instance of you NaCl module on the web page. The browser creates a new |
-/// instance for each <embed> tag with |
-/// <code>type="application/x-ppapi-nacl-srpc"</code>. |
-class HexGameModule : public pp::Module { |
- public: |
- HexGameModule() : pp::Module() {} |
- virtual ~HexGameModule() {} |
- |
- /// Create and return a HexGameInstance object. |
- /// @param instance [in] a handle to a plug-in instance. |
- /// @return a newly created HexGameInstance. |
- /// @note The browser is responsible for calling @a delete when done. |
- virtual pp::Instance* CreateInstance(PP_Instance instance) { |
- return new HexGameInstance(instance); |
- } |
-}; |
- |
-} // namespace |
- |