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

Unified Diff: samples/simple_todo/simple_todo_main.cc

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « samples/simple_todo/simple_todo_impl.dart ('k') | samples/simple_todo/simple_todo_service_tests.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: samples/simple_todo/simple_todo_main.cc
diff --git a/samples/simple_todo/simple_todo_main.cc b/samples/simple_todo/simple_todo_main.cc
deleted file mode 100644
index 52f6383a62d133d2cd7f8852959fdc37d73bfa50..0000000000000000000000000000000000000000
--- a/samples/simple_todo/simple_todo_main.cc
+++ /dev/null
@@ -1,208 +0,0 @@
-// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE.md file.
-
-#include <stdio.h>
-#include <pthread.h>
-#include <stdlib.h>
-
-#include "include/dartino_api.h"
-#include "include/service_api.h"
-#include "generated/cc/simple_todo.h"
-
-static const int kDone = 1;
-static pthread_mutex_t mutex;
-static pthread_cond_t cond;
-static int status = 0;
-
-typedef enum {
- EC_OK = 0,
- EC_THREAD,
- EC_INPUT_ERR,
-} ErrorCode;
-
-static void ChangeStatusAndNotify(int new_status) {
- pthread_mutex_lock(&mutex);
- status = new_status;
- pthread_cond_signal(&cond);
- pthread_mutex_unlock(&mutex);
-}
-
-static void WaitForVmThread(int expected) {
- pthread_mutex_lock(&mutex);
- while (expected != status) pthread_cond_wait(&cond, &mutex);
- pthread_mutex_unlock(&mutex);
-}
-
-static void* StartDartino(void* arg) {
- char* snapshot_filepath_with_name = reinterpret_cast<char*>(arg);
- DartinoSetup();
- DartinoProgram program =
- DartinoLoadSnapshotFromFile(snapshot_filepath_with_name);
- if (DartinoRunMain(program, 0, NULL) != 0) {
- printf("Failed to run snapshot: %s\n", snapshot_filepath_with_name);
- exit(1);
- }
- DartinoDeleteProgram(program);
- DartinoTearDown();
- ChangeStatusAndNotify(kDone);
- return NULL;
-}
-
-static void StartVmThread(char* snapshot_filename) {
- pthread_mutex_init(&mutex, NULL);
- pthread_cond_init(&cond, NULL);
- pthread_t tid = 0;
- int result = pthread_create(&tid, 0, StartDartino,
- reinterpret_cast<void*>(snapshot_filename));
- if (result != 0) {
- printf("Error creating thread\n");
- exit(EC_THREAD);
- }
-}
-
-class TodoListView {
- public:
- void showMenu() {
- printf("\n #### Todo Menu ####\n"
- "m\t-show this menu\n"
- "l\t-list todo items\n"
- "a\t-add todo item\n"
- "t\t-toggle todo item done/undone\n"
- "c\t-clear done items\n"
- "d\t-delete item\n"
- "q\t-quit application\n");
- }
-
- int readln(char* buffer, int buffer_length) {
- int i = 0;
- int ch = 0;
-
- if ((buffer == NULL) || (buffer_length == 0)) return 0;
-
- do {
- ch = getchar();
- if (ch != EOF && ch != '\n') {
- buffer[i] = ch;
- }
-
- if (ch == EOF) return -1;
-
- ++i;
- } while (ch != '\n' && i < buffer_length);
- buffer[i] = 0;
- return i;
- }
-
- // TODO(zarah): In a multithreaded setting this should be atomic or extend
- // the service with a List<Item> getItems to use here instead.
- void listTodoItems() {
- int32_t count = TodoService::getNoItems();
- int32_t i = 0;
-
- printf("-------------------- ToDo's --------------------\n");
- printf("Listing %2u items\n", count);
- for (i = 0; i < count; ++i) {
- TodoItem item = TodoService::getItem(i);
- const char* done = (item.getDone() ? "+" : " ");
- printf("%2u: %s [%1s] \n", item.getId(), item.getTitle(), done);
- }
- printf("------------------------------------------------\n");
- }
-
- void addTodoItem() {
- char title[60] = {0};
- int title_length = sizeof(title);
- printf("Add Todo Item:\n");
- printf("Title: ");
- title_length = readln(title, title_length);
- printf("\n");
-
- int size = 56 + BoxString::kSize + title_length;
- MessageBuilder builder(size);
- BoxStringBuilder box = builder.initRoot<BoxStringBuilder>();
- box.setS(title);
- TodoService::createItem(box);
- }
-
- void toggleTodoItem() {
- char idstr[5] = {0};
- printf("[t] Enter id: ");
- readln(idstr, sizeof(idstr));
- printf("%s\n", idstr);
- TodoService::toggle(atoi(idstr));
- }
-
- void clear_done_items() {
- TodoService::clearItems();
- }
-
- void deleteItem() {
- char idstr[5] = {0};
- printf("[d] Enter id: ");
- readln(idstr, sizeof(idstr));
- printf("%s\n", idstr);
- TodoService::deleteItem(atoi(idstr));
- }
-};
-
-static int InteractWithService() {
- TodoService::setup();
- ErrorCode ec = EC_OK;
- TodoListView view;
- view.showMenu();
- bool should_terminate = false;
- do {
- char in[2] = {0};
- if (view.readln(in, 2) < 0) {
- ec = EC_OK;
- should_terminate = true;
- } else {
- printf("\n");
- switch (in[0]) {
- case 'q':
- should_terminate = true;
- break;
- case 'm':
- view.showMenu();
- break;
- case 'l':
- view.listTodoItems();
- break;
- case 'a':
- view.addTodoItem();
- view.listTodoItems();
- break;
- case 't':
- view.toggleTodoItem();
- view.listTodoItems();
- break;
- case 'c':
- view.clear_done_items();
- view.listTodoItems();
- break;
- case 'd':
- view.deleteItem();
- view.listTodoItems();
- break;
- default:
- break;
- }
- }
- } while (!should_terminate);
- TodoService::tearDown();
- return ec;
-}
-
-int main(int argc, char** argv) {
- if (argc < 2) {
- printf("Usage: %s <snapshot file>\n", argv[0]);
- return EC_OK;
- }
-
- ServiceApiSetup();
- StartVmThread(argv[1]);
- int ec = InteractWithService();
- WaitForVmThread(kDone);
- return ec;
-}
« no previous file with comments | « samples/simple_todo/simple_todo_impl.dart ('k') | samples/simple_todo/simple_todo_service_tests.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698