jni: Upgrade underlying NFD to version 0.6.2-11-gd657d53
This change replaces in-project JNI compilation of ndn-cxx and NFD with
packaged versions of ndn-cxx and NFD using a customized
android-crew-staging (https://github.com/named-data-mobile/android-crew-staging).
Refer to README-dev.md for more detail.
This commit also drops Logcat views
Refs: #4661
Change-Id: Id981689475d9da3aea63bea38d925f335c25b46e
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 948b73b..51c923b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,11 +3,11 @@
package="net.named_data.nfd" >
<uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+ <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
diff --git a/app/src/main/java/net/named_data/nfd/FaceStatusFragment.java b/app/src/main/java/net/named_data/nfd/FaceStatusFragment.java
index 143ed58..0d58cd3 100644
--- a/app/src/main/java/net/named_data/nfd/FaceStatusFragment.java
+++ b/app/src/main/java/net/named_data/nfd/FaceStatusFragment.java
@@ -1,6 +1,6 @@
/* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2015-2017 Regents of the University of California
+ * Copyright (c) 2015-2018 Regents of the University of California
* <p/>
* This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
* See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -125,10 +125,10 @@
listItems.add(new ListItem(R.string.link_type, getLinkType(faceStatus.getLinkType())));
listItems.add(new ListItem(R.string.in_interests, String.valueOf(
faceStatus.getNInInterests())));
- listItems.add(new ListItem(R.string.in_data, String.valueOf(faceStatus.getNInDatas())));
+ listItems.add(new ListItem(R.string.in_data, String.valueOf(faceStatus.getNInData())));
listItems.add(new ListItem(R.string.out_interests, String.valueOf(
faceStatus.getNOutInterests())));
- listItems.add(new ListItem(R.string.out_data, String.valueOf(faceStatus.getNOutDatas())));
+ listItems.add(new ListItem(R.string.out_data, String.valueOf(faceStatus.getNOutData())));
listItems.add(new ListItem(R.string.in_bytes, String.valueOf(faceStatus.getNInBytes())));
listItems.add(new ListItem(R.string.out_bytes, String.valueOf(faceStatus.getNOutBytes())));
diff --git a/app/src/main/java/net/named_data/nfd/LogcatFragment.java b/app/src/main/java/net/named_data/nfd/LogcatFragment.java
deleted file mode 100644
index ed4b1e8..0000000
--- a/app/src/main/java/net/named_data/nfd/LogcatFragment.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2015 Regents of the University of California
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
- * See AUTHORS.md for complete list of NFD Android authors and contributors.
- *
- * NFD Android is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD Android is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD Android, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package net.named_data.nfd;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import net.named_data.nfd.utils.G;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-/**
- * Logcat fragment that houses the output of LogCat in a ListView for viewing.
- *
- * The ListView is backed by a {@link net.named_data.nfd.LogcatFragment.LogListAdapter}
- * that that limits the number of logs that are being displayed to the user. This
- * prevents the ListView from growing indeterminately. This maximum number of
- * log lines that is allowed to be displayed is set by
- * {@link net.named_data.nfd.LogcatFragment#s_logMaxLines}.
- *
- */
-public class LogcatFragment extends Fragment {
-
- public static Fragment newInstance() {
- return new LogcatFragment();
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater,
- @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- @SuppressLint("InflateParams")
- View v = inflater.inflate(R.layout.fragment_logcat_output, null);
-
- // Get UI Elements
- m_logListView = (ListView) v.findViewById(R.id.log_output);
- m_logListAdapter = new LogListAdapter(inflater, s_logMaxLines);
- m_logListView.setAdapter(m_logListAdapter);
-
- return v;
- }
-
- @Override
- public void onResume() {
- super.onResume();
- startLogging();
- G.Log("LogcatFragment(): onResume()");
- }
-
- @Override
- public void onPause() {
- super.onPause();
- stopLogging();
- G.Log("LogcatFragment(): onPause()");
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- inflater.inflate(R.menu.menu_log, menu);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.action_log_settings:
- m_callbacks.onDisplayLogcatSettings();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- try {
- m_callbacks = (Callbacks) activity;
- } catch (ClassCastException e) {
- G.Log("Hosting activity must implement callback.");
- throw e;
- }
- }
-
- @Override
- public void onDetach() {
- super.onDetach();
- m_callbacks = null;
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /**
- * Starts logging by spawning a new thread to capture logs.
- */
- private void startLogging() {
- // Clear output, update UI and get tag arguments
- clearLogOutput();
- appendLogText(getString(R.string.loading_logger));
- m_tagArguments = LogcatSettingsManager.get(getActivity()).getTags();
-
- new Thread(){
- @Override
- public void run() {
- captureLog();
- G.Log("Thread done capturing logs.");
- }
- }.start();
- }
-
- /**
- * Stops the logging by killing the process running logcat.
- */
- private void stopLogging() {
- // Kill process
- m_logProcess.destroy();
- }
-
- /**
- * Clear log adapter and update UI.
- */
- private void clearLogOutput() {
- m_logListAdapter.clearMessages();
- }
-
- /**
- * Convenience method to append a message to the log output
- * and scroll to the bottom of the log.
- *
- * @param message String message to be posted to the text view.
- */
- private void appendLogText(String message) {
- m_logListAdapter.addMessage(message);
- m_logListView.setSelection(m_logListAdapter.getCount() - 1);
- }
-
- /**
- * Convenience method to capture the output from logcat.
- */
- private void captureLog() {
- try {
- /**
- * NOTE: The use of the 'time' log output format is hard
- * coded for now. This option is similar to that of the
- * log output that is seen in Android Studio and Eclipse.
- *
- * In the future this value can be user configurable or
- * placed in the log preference settings.
- */
- // Build command for execution
- String cmd = String.format("%s -v time %s *:S",
- "logcat",
- m_tagArguments);
-
- G.Log("LogCat Command: " + cmd);
-
- m_logProcess = Runtime.getRuntime().exec(cmd);
- BufferedReader in = new BufferedReader(
- new InputStreamReader(m_logProcess.getInputStream()));
-
- String line;
- while ((line = in.readLine()) != null) {
- final String message = line;
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- appendLogText(message);
- }
- });
- }
-
- // Wait for process to join this thread
- m_logProcess.waitFor();
- } catch (IOException | InterruptedException e) {
- G.Log("captureLog(): " + e);
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /**
- * Custom LogListAdapter to limit the number of log lines that
- * is being stored and displayed.
- */
- private static class LogListAdapter extends BaseAdapter {
-
- /**
- * Create a ListView compatible adapter with an
- * upper bound on the maximum number of entries that will
- * be displayed in the ListView.
- *
- * @param maxLines Maximum number of entries allowed in
- * the ListView for this adapter.
- */
- public LogListAdapter(LayoutInflater layoutInflater, int maxLines) {
- m_data = new ArrayList<>();
- m_layoutInflater = layoutInflater;
- m_maxLines = maxLines;
- }
-
- /**
- * Add a message to be displayed in the log's list view.
- *
- * @param message Message to be added to the underlying data store
- * and displayed on thi UI.
- */
- public void addMessage(String message) {
- if (m_data.size() == m_maxLines) {
- m_data.get(0);
- }
-
- m_data.add(message);
- notifyDataSetChanged();
- }
-
- /**
- * Convenience method to clear all messages from the underlying
- * data store and update the UI.
- */
- public void clearMessages() {
- m_data.clear();
- this.notifyDataSetChanged();
- }
-
- @Override
- public int getCount() {
- return m_data.size();
- }
-
- @Override
- public Object getItem(int position) {
- return m_data.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @SuppressLint("InflateParams")
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- LogEntryViewHolder holder;
-
- if (convertView == null) {
- holder = new LogEntryViewHolder();
-
- convertView = m_layoutInflater.inflate(R.layout.list_item_log, null);
- convertView.setTag(holder);
-
- holder.logLineTextView = (TextView) convertView.findViewById(R.id.log_line);
- } else {
- holder = (LogEntryViewHolder) convertView.getTag();
- }
-
- holder.logLineTextView.setText(m_data.get(position));
- return convertView;
- }
-
- /** Underlying message data store for log messages*/
- private final ArrayList<String> m_data;
-
- /** Layout inflater for inflating views */
- private final LayoutInflater m_layoutInflater;
-
- /** Maximum number of log lines to display */
- private final int m_maxLines;
- }
-
- /**
- * Log entry view holder object for holding the output.
- */
- private static class LogEntryViewHolder {
- public TextView logLineTextView;
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- public interface Callbacks {
- void onDisplayLogcatSettings();
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /** Maximum number of log lines to be displayed by the backing adapter of the ListView */
- private static final int s_logMaxLines = 380;
-
- /** Process in which logcat is running in */
- private Process m_logProcess;
-
- /** ListView for displaying log output in */
- private ListView m_logListView;
-
- /** Customized ListAdapter for controlling log output */
- private LogListAdapter m_logListAdapter;
-
- /** Tag argument to logcat */
- private String m_tagArguments;
-
- /** Callback reference to hosting activity */
- private Callbacks m_callbacks;
-}
diff --git a/app/src/main/java/net/named_data/nfd/LogcatSettingItem.java b/app/src/main/java/net/named_data/nfd/LogcatSettingItem.java
deleted file mode 100644
index d5a3fff..0000000
--- a/app/src/main/java/net/named_data/nfd/LogcatSettingItem.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2015 Regents of the University of California
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
- * See AUTHORS.md for complete list of NFD Android authors and contributors.
- *
- * NFD Android is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD Android is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD Android, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package net.named_data.nfd;
-
-/**
- * Logcat setting item that contains information about the tag name
- * in the m_logTag field and log level in the m_logLevel field.
- */
-public class LogcatSettingItem {
-
- public LogcatSettingItem(String logTag, String logLevel) {
- m_logTag = logTag;
- m_logLevel = logLevel;
- }
-
- public String getLogTag() {
- return m_logTag;
- }
-
- public void setLogTag(String logTag) {
- m_logTag = logTag;
- }
-
- public String getLogLevel() {
- return m_logLevel;
- }
-
- public void setLogLevel(String logLevel) {
- m_logLevel = logLevel;
- }
-
- @Override
- public String toString() {
- return String.format("%s: %s", m_logTag, m_logLevel);
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /** Log tag that logcat should monitor */
- private String m_logTag;
-
- /** Log level (aka priority level) that logcat should use for this log tag */
- private String m_logLevel;
-}
diff --git a/app/src/main/java/net/named_data/nfd/LogcatSettingsFragment.java b/app/src/main/java/net/named_data/nfd/LogcatSettingsFragment.java
deleted file mode 100644
index 1cb1b82..0000000
--- a/app/src/main/java/net/named_data/nfd/LogcatSettingsFragment.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2015-2017 Regents of the University of California
- * <p/>
- * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
- * See AUTHORS.md for complete list of NFD Android authors and contributors.
- * <p/>
- * NFD Android is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- * <p/>
- * NFD Android is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- * <p/>
- * You should have received a copy of the GNU General Public License along with
- * NFD Android, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package net.named_data.nfd;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.ListFragment;
-import android.support.v4.content.ContextCompat;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-
-public class LogcatSettingsFragment extends ListFragment {
-
- public static LogcatSettingsFragment newInstance() {
- return new LogcatSettingsFragment();
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setHasOptionsMenu(true);
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState)
- {
- super.onViewCreated(view, savedInstanceState);
-
- View v = getLayoutInflater().inflate(R.layout.fragment_logcat_tags_list_header, getListView(), false);
- getListView().addHeaderView(v, null, false);
- getListView().setDivider(ContextCompat.getDrawable(getContext(), R.drawable.list_item_divider));
-
- // @TODO implement log item removal
- // ListView listView = (ListView) v.findViewById(android.R.id.list);
- // listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
- // listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
- // @Override
- // public void onItemCheckedStateChanged(ActionMode mode,
- // int position,
- // long id,
- // boolean checked)
- // {
- // // Nothing to do here
- // }
- //
- // @Override
- // public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- // MenuInflater inflater = mode.getMenuInflater();
- // inflater.inflate(R.menu.menu_logcat_settings_multiple_modal_menu, menu);
- // return true;
- // }
- //
- // @Override
- // public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- // return false;
- // }
- //
- // @Override
- // public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- // switch (item.getItemId()) {
- // case R.id.menu_item_delete_setting_item:
- // // TODO: Delete log item tag
- // return true;
- // default:
- // return false;
- // }
- // }
- //
- // @Override
- // public void onDestroyActionMode(ActionMode mode) {
- // // Nothing to do here
- // }
- // });
- }
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState)
- {
- super.onActivityCreated(savedInstanceState);
-
- if (m_adapter == null) {
- m_logcatSettingsManager = LogcatSettingsManager.get(getActivity());
- m_logcatSettingItems = m_logcatSettingsManager.getLogcatSettingItems();
-
- m_adapter = new LogcatSettingsAdapter(getActivity(), m_logcatSettingItems);
- }
- // setListAdapter must be called after addHeaderView. Otherwise, there is an exception on some platforms.
- // http://stackoverflow.com/a/8141537/2150331
- setListAdapter(m_adapter);
- }
-
- @Override
- public void onDestroyView()
- {
- super.onDestroyView();
- setListAdapter(null);
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
- {
- super.onCreateOptionsMenu(menu, inflater);
- inflater.inflate(R.menu.menu_logcat_settings, menu);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item)
- {
- switch (item.getItemId()) {
- case R.id.action_log_settings:
- FragmentManager fm = getActivity().getSupportFragmentManager();
- ResetLogLevelDialog dialog
- = ResetLogLevelDialog.newInstance(getString(R.string.reset_log_level_dialog_title));
- dialog.setTargetFragment(LogcatSettingsFragment.this, REQUEST_CODE_DIALOG_RESET_ALL_LOG_LEVELS);
- dialog.show(fm, DIALOG_RESET_ALL_LOG_LEVELS_TAG);
-
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- @Override
- public void onListItemClick(ListView l, View v, int position, long id) {
- final String logTag = m_logcatSettingItems.get(position).getLogTag();
-
- final FragmentManager fm = getActivity().getSupportFragmentManager();
- final ResetLogLevelDialog dialog = ResetLogLevelDialog.newInstance(logTag, position);
-
- dialog.setTargetFragment(LogcatSettingsFragment.this, REQUEST_CODE_DIALOG_SET_LOG_LEVEL);
- dialog.show(fm, DIALOG_SET_LOG_LEVEL_TAG);
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (resultCode != Activity.RESULT_OK) {
- return;
- }
-
- String newLogLevel;
- switch (requestCode) {
- case REQUEST_CODE_DIALOG_RESET_ALL_LOG_LEVELS:
- newLogLevel = data.getStringExtra(ResetLogLevelDialog.EXTRA_RESET_LOG_LEVEL_VALUE);
-
- // Update settings
- for (LogcatSettingItem item : m_logcatSettingItems) {
- item.setLogLevel(newLogLevel);
- }
-
- // Update UI
- updateListUI();
-
- // Save setting items
- m_logcatSettingsManager.saveSettingItems();
- break;
- case REQUEST_CODE_DIALOG_SET_LOG_LEVEL:
- newLogLevel = data.getStringExtra(ResetLogLevelDialog.EXTRA_RESET_LOG_LEVEL_VALUE);
- final int listPosition
- = data.getIntExtra(ResetLogLevelDialog.EXTRA_LOG_ITEM_LIST_POSITION, -1);
-
- if (listPosition != -1) {
- m_logcatSettingItems.get(listPosition).setLogLevel(newLogLevel);
-
- // Update UI
- updateListUI();
-
- // Save setting items
- m_logcatSettingsManager.saveSettingItems();
- }
- break;
- }
- }
-
- /**
- * Convenience method that updates the UI by notifying the backing list adapter
- * that changes has been made to the underlying data set.
- */
- private void updateListUI() {
- ((LogcatSettingsAdapter) getListAdapter()).notifyDataSetChanged();
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /**
- * Adapter for use by thi ListFragment that display a list of LogcatSettingItem.
- */
- private static class LogcatSettingsAdapter extends ArrayAdapter<LogcatSettingItem> {
-
- LogcatSettingsAdapter(Context context, ArrayList<LogcatSettingItem> objects) {
- super(context, 0, objects);
- m_layoutInflater = LayoutInflater.from(context);
- }
-
- @Override @NonNull
- public View getView(int position, View convertView, @NonNull ViewGroup parent) {
- SettingItemHolder holder;
-
- if (convertView == null) {
- holder = new SettingItemHolder();
-
- convertView = m_layoutInflater.inflate(R.layout.list_item_setting_item, parent, false);
- convertView.setTag(holder);
-
- holder.m_logTag = convertView.findViewById(R.id.list_item_log_tag);
- holder.m_logLevel = convertView.findViewById(R.id.list_item_setting_log_level);
- } else {
- holder = (SettingItemHolder) convertView.getTag();
- }
-
- LogcatSettingItem item = getItem(position);
- if (item != null) {
- holder.m_logTag.setText(item.getLogTag());
- holder.m_logLevel.setText(item.getLogLevel());
- }
-
- return convertView;
- }
-
- private static class SettingItemHolder {
- private TextView m_logTag;
- private TextView m_logLevel;
- }
-
- private final LayoutInflater m_layoutInflater;
- }
-
- /**
- * Convenient dialog fragment that prompts for the log level value
- * to reset all tags to.
- */
- public static class ResetLogLevelDialog extends DialogFragment {
-
- public static ResetLogLevelDialog newInstance(String dialogTitle) {
- return newInstance(dialogTitle, -1);
- }
-
- public static ResetLogLevelDialog newInstance(String dialogTitle, int listPosition) {
- final Bundle args = new Bundle();
- args.putSerializable(BUNDLE_KEY_DIALOG_TITLE, dialogTitle);
-
- if (listPosition != -1) {
- args.putSerializable(BUNDLE_KEY_DIALOG_LIST_POSITION, listPosition);
- }
-
- final ResetLogLevelDialog fragment = new ResetLogLevelDialog();
- fragment.setArguments(args);
-
- return fragment;
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final String [] logLevelValues
- = getResources().getStringArray(R.array.reset_log_level_values);
-
- final String dialogTitle = getArguments().getString(BUNDLE_KEY_DIALOG_TITLE);
-
- return new AlertDialog.Builder(getActivity())
- .setTitle(dialogTitle)
- .setItems(
- logLevelValues,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- sendResult(Activity.RESULT_OK, logLevelValues[which]);
- }
- })
- .create();
- }
-
- /**
- * Convenient method to send data back to the fragment that presents this
- * dialog.
- *
- * @param resultCode Result code to be passed back
- * @param logLevelValue Log level value to be passed back
- */
- private void sendResult(int resultCode, String logLevelValue) {
- if (getTargetFragment() == null) {
- return;
- }
-
- // Create intent
- Intent intent = new Intent();
- intent.putExtra(EXTRA_RESET_LOG_LEVEL_VALUE, logLevelValue);
-
- // Fill item position if present
- final int logItemPosition = getArguments().getInt(BUNDLE_KEY_DIALOG_LIST_POSITION, -1);
- if (logItemPosition != -1) {
- intent.putExtra(EXTRA_LOG_ITEM_LIST_POSITION, logItemPosition);
- }
-
- // Send results
- getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent);
- }
-
- /** Unique extra name to be used */
- public static final String EXTRA_RESET_LOG_LEVEL_VALUE
- = "net.named_data.nfd.reset_log_level_value";
-
- public static final String EXTRA_LOG_ITEM_LIST_POSITION
- = "net.named_data.nfd.log_item_list_position";
-
- private static final String BUNDLE_KEY_DIALOG_TITLE
- = "BUNDLE_KEY_DIALOG_TITLE";
-
- private static final String BUNDLE_KEY_DIALOG_LIST_POSITION
- = "BUNDLE_KEY_DIALOG_LIST_POSITION";
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /** Array list that contains all the tags that are logged */
- private ArrayList<LogcatSettingItem> m_logcatSettingItems;
-
- /** Reference to the currently used LogcatSettingsManager */
- private LogcatSettingsManager m_logcatSettingsManager;
-
- /** Request code for dialog that gets the new log level for all tags */
- private static final int REQUEST_CODE_DIALOG_RESET_ALL_LOG_LEVELS = 1;
-
- /** Request code for dialog that gets the new log level for a single tag */
- private static final int REQUEST_CODE_DIALOG_SET_LOG_LEVEL = 2;
-
- /** Unique tag that identifies dialog fragment in the fragment manager */
- private static final String DIALOG_RESET_ALL_LOG_LEVELS_TAG = "ResetAllLogLevelDialog";
-
- /** Unique tag that identifies dialog fragment in the fragment manager */
- private static final String DIALOG_SET_LOG_LEVEL_TAG = "SetLogLevelDialog";
-
- private ArrayAdapter<LogcatSettingItem> m_adapter;
-}
diff --git a/app/src/main/java/net/named_data/nfd/LogcatSettingsManager.java b/app/src/main/java/net/named_data/nfd/LogcatSettingsManager.java
deleted file mode 100644
index e6bffcb..0000000
--- a/app/src/main/java/net/named_data/nfd/LogcatSettingsManager.java
+++ /dev/null
@@ -1,391 +0,0 @@
-/* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2015 Regents of the University of California
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
- * See AUTHORS.md for complete list of NFD Android authors and contributors.
- *
- * NFD Android is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD Android is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD Android, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package net.named_data.nfd;
-
-import android.content.Context;
-import android.text.TextUtils;
-
-import net.named_data.nfd.utils.G;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * Manager that controls the loading and saving of tags that are being logged.
- */
-public class LogcatSettingsManager {
-
- private LogcatSettingsManager(Context context) {
- m_context = context;
- m_logcatSettingItems = new ArrayList<>();
- m_logLevelMap = new HashMap<>();
- m_logcatTagsJSONSerializer = new LogcatTagsJSONSerializer(context, NFD_LOGCAT_TAGS_FILENAME);
-
- // Populate log level map
- loadLogLevelMap();
-
- // Check if previous tags setting exists; otherwise load defaults
- if (m_logcatTagsJSONSerializer.logcatTagsFileExists()) {
- loadSettingItems();
- } else {
- loadDefaultSettingItems();
- }
-
- // Save setting items to file
- saveSettingItems();
-
- // Sort log tag name lexicographically
- Collections.sort(m_logcatSettingItems, new Comparator<LogcatSettingItem>() {
- @Override
- public int compare(LogcatSettingItem lhs, LogcatSettingItem rhs) {
- return lhs.getLogTag().compareTo(rhs.getLogTag());
- }
- });
- }
-
- /**
- * Gets the singleton logcat settings manager.
- *
- * @param context Current application context
- * @return The singleton settings manager
- */
- public static LogcatSettingsManager get(Context context) {
- if (s_logcatSettingsManager == null) {
- s_logcatSettingsManager = new LogcatSettingsManager(context.getApplicationContext());
- }
- return s_logcatSettingsManager;
- }
-
- /**
- * Return the current working copy of setting items that are managed by the
- * settings manager.
- *
- * @return Current setting items that are loaded
- */
- public ArrayList<LogcatSettingItem> getLogcatSettingItems() {
- return m_logcatSettingItems;
- }
-
- /**
- * Generate a string representing all the tags to be filtered by logcat
- * and the relevant log levels.
- *
- * An example of a string returned by this method is:
- *
- * <pre>
- * NFDService:S Strategy:S TcpChannel:S TcpFactory:S TcpLocalFace:S UdpFactory:S *:S
- * </pre>
- *
- * @return String representation of the tags and their relevant log levels to be
- * filtered.
- */
- public String getTags() {
- ArrayList<String> arr = new ArrayList<>();
- for (LogcatSettingItem item : m_logcatSettingItems) {
- arr.add(String.format("%s:%s", item.getLogTag(), getPriorityName(item.getLogLevel())));
- }
-
- // Sort and silence everything else by default
- Collections.sort(arr);
- arr.add("*:S");
-
- return TextUtils.join(" ", arr);
- }
-
- /**
- * Convenience method that saves all tags present in m_logcatSettingItems
- * to the persistent JSON storage file.
- */
- public void saveSettingItems() {
- // Create tags map
- Map<CharSequence, CharSequence> map = new HashMap<>();
- for (LogcatSettingItem item : m_logcatSettingItems) {
- map.put(item.getLogTag(), getPriorityName(item.getLogLevel()));
- }
-
- // Save tags
- try {
- m_logcatTagsJSONSerializer.saveTags(map);
- } catch (IOException e) {
- G.Log("saveSettingItems(): Error: " + e);
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /**
- * Convenience method that loads all possible log level priority values as
- * specified by the string array: R.array.logcat_log_level_map.
- */
- private void loadLogLevelMap() {
- for (String item : m_context.getResources().getStringArray(R.array.logcat_log_level_map)) {
- String [] arr = item.split(":");
- m_logLevelMap.put(arr[0], arr[1]);
- }
- }
-
- /**
- * Convenience method that loads default values for tags and log levels that
- * should be used. This method should be invoked when the application does not
- * have previous JSON state information of the tags and log levels.
- */
- private void loadDefaultSettingItems() {
- String [] defaults
- = m_context.getResources().getStringArray(R.array.default_log_tags_and_levels);
- for (String item : defaults) {
- String [] arr = item.split(":");
- m_logcatSettingItems.add(new LogcatSettingItem(arr[0], getVerbosePriorityName(arr[1])));
- }
- }
-
- /**
- * Convenience method that loads all tags that were previously stored and recorded. This
- * method populates m_logcatSettingItems for use in a ListView to present all loaded tags and
- * their relevant log levels.
- */
- private void loadSettingItems() {
- Map<CharSequence, CharSequence> map;
-
- try {
- map = m_logcatTagsJSONSerializer.loadTags();
-
- for (Map.Entry<CharSequence, CharSequence> entry : map.entrySet()) {
- m_logcatSettingItems
- .add(new LogcatSettingItem(entry.getKey().toString(),
- getVerbosePriorityName(entry.getValue().toString())));
- }
- } catch (IOException | NullPointerException e) {
- G.Log("loadSettingItems(): Error in loading tags from file: " + e);
- }
- }
-
- /**
- * Convenience method to get the verbose priority name. For instance, if
- * "V" were passed in, the returned string would be "Verbose". This is
- * dependent on the data that is loaded into m_logLevelMap.
- *
- * @param priority Short form priority name, e.g. "V"
- * @return Verbose priority name, e.g. "Verbose" for a priority argument of "V"
- */
- private String getVerbosePriorityName(String priority) {
- for (Map.Entry<CharSequence, CharSequence> item : m_logLevelMap.entrySet()) {
- if (item.getValue().equals(priority)) {
- return item.getKey().toString();
- }
- }
- return null;
- }
-
- /**
- * Convenience method that gets the priority name from the verbose name. For instance,
- * if "Verbose" were passed in, the returned string would be "V". This is
- * dependent on the data that is loaded into m_logLevelMap.
- *
- * @param priorityVerboseName Verbose priority name, e.g. "Verbose"
- * @return Short form priority name, e.g. "V"
- */
- private String getPriorityName(String priorityVerboseName) {
- return m_logLevelMap.get(priorityVerboseName).toString();
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /**
- * JSON Serializer used to store JSON Tags and relevant settings to
- * a local file. The JSON file format that this serializer stores
- * in the private file is as such:
- *
- * <pre>
- * [
- * {
- * "TcpFactory": "V",
- * "CommandValidator": "V",
- * "RibManager": "V",
- * "Strategy": "V",
- * "FaceTable": "V",
- * "FibManager": "V",
- * "FaceManager": "V",
- * "PrivilegeHelper": "V",
- * "ManagerBase": "V",
- * "TcpChannel": "V",
- * "InternalFace": "V",
- * "TcpLocalFace": "V",
- * "RemoteRegistrator": "V",
- * "GeneralConfigSection": "V",
- * "UdpFactory": "V",
- * "StrategyChoice": "V",
- * "TablesConfigSection": "V"
- * }
- * ]
- * </pre>
- *
- * Each line represents a log tag that is to be monitored as well as the
- * log level to be monitored (aka priority level of log cat). Tags can be any
- * tag for the logger to filter.
- *
- * The log level should be one of the following form:
- *
- * <pre>
- * Log Level | Meaning
- * ===================
- * V : Verbose
- * D : Debug
- * I : Info
- * W : Warning
- * E : Error
- * F : Fatal
- * S : Silent
- * </pre>
- *
- */
- private static class LogcatTagsJSONSerializer {
-
- public LogcatTagsJSONSerializer(Context context, String filename) {
- m_context = context;
- m_filename = filename;
- }
-
- /**
- * Convenience method to save all tags and their respective log levels from the
- * given map. The map should contain key-value pairs of the following format:
- *
- * <pre>
- * "TagName": "V"
- * </pre>
- *
- * @param map Map to be converted saved as a JSON file
- * @throws IOException
- */
- public void saveTags(Map<CharSequence, CharSequence> map) throws IOException {
- // Create JSON Array
- JSONArray array = new JSONArray().put(new JSONObject(map));
-
- BufferedWriter writer = null;
- try {
- OutputStream out = m_context.openFileOutput(m_filename, Context.MODE_PRIVATE);
- writer = new BufferedWriter(new OutputStreamWriter(out));
- writer.write(array.toString());
- } catch (IOException e) {
- G.Log(String.format("saveTags(): Error while writing to file: %s - %s",
- m_filename, e));
- } finally {
- if (writer != null) {
- writer.close();
- }
- }
- }
-
- /**
- * Convenience method to load all tags that were previously saved to a JSON
- * file. The format depends on what was previously stored in the JSON file,
- * but it is recommended to following the format set out in
- * {@link
- * net.named_data.nfd.LogcatSettingsManager.LogcatTagsJSONSerializer#saveTags(java.util.Map)}
- *
- * @return Map that was previously stored in the JSON file
- * @throws IOException
- */
- public Map<CharSequence, CharSequence> loadTags() throws IOException {
- Map<CharSequence, CharSequence> map = new HashMap<>();
-
- BufferedReader reader = null;
- try {
- InputStream inputStream = m_context.openFileInput(m_filename);
- reader = new BufferedReader(new InputStreamReader(inputStream));
- StringBuilder jsonString = new StringBuilder();
- String line;
- while ((line = reader.readLine()) != null) {
- jsonString.append(line);
- }
-
- // Parse JSON array
- JSONArray array = (JSONArray) new JSONTokener(jsonString.toString()).nextValue();
-
- // Populate map
- for (int i=0; i<array.length(); i++) {
- JSONObject jsonObject = array.getJSONObject(i);
- Iterator<String> iterator = jsonObject.keys();
- while (iterator.hasNext()) {
- String key = iterator.next();
- map.put(key, (CharSequence) jsonObject.get(key));
- }
- }
- } catch (JSONException | IOException e) {
- G.Log(String.format("saveTags(): Error while reading from file: %s - %s",
- m_filename, e));
- } finally {
- if (reader != null) {
- reader.close();
- }
- }
-
- return map;
- }
-
- /**
- * @return true if a previously saved file exists; false otherwise
- */
- public boolean logcatTagsFileExists() {
- return m_context.getFileStreamPath(m_filename).exists();
- }
-
- /** Context for storing and retrieving files */
- private final Context m_context;
-
- /** File name to store JSON */
- private final String m_filename;
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- /** Context for storage and retrieval of logcat settings (e.g. from Preferences or Files) */
- private final Context m_context;
-
- /** Array list that contains all the tags that are logged */
- private final ArrayList<LogcatSettingItem> m_logcatSettingItems;
-
- /** Mapping of log tag description to logcat priority setting */
- private final Map<CharSequence, CharSequence> m_logLevelMap;
-
- /** Reference to JSON Serializer for use */
- private final LogcatTagsJSONSerializer m_logcatTagsJSONSerializer;
-
- /** Singleton reference to a LogcatSettingsManager */
- private static LogcatSettingsManager s_logcatSettingsManager;
-
- /** NFD Logcat Tags JSON filename */
- private static final String NFD_LOGCAT_TAGS_FILENAME = "NFD_LOGCAT_TAGS_FILE";
-}
diff --git a/app/src/main/java/net/named_data/nfd/MainActivity.java b/app/src/main/java/net/named_data/nfd/MainActivity.java
index c3a13ba..a1de558 100644
--- a/app/src/main/java/net/named_data/nfd/MainActivity.java
+++ b/app/src/main/java/net/named_data/nfd/MainActivity.java
@@ -1,6 +1,6 @@
/* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2015-2017 Regents of the University of California
+ * Copyright (c) 2015-2018 Regents of the University of California
*
* This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
* See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -41,7 +41,6 @@
*/
public class MainActivity extends AppCompatActivity
implements DrawerFragment.DrawerCallbacks,
- LogcatFragment.Callbacks,
FaceListFragment.Callbacks,
RouteListFragment.Callbacks
{
@@ -70,8 +69,6 @@
DRAWER_ITEM_PING));
// items.add(new DrawerFragment.DrawerItem(R.string.drawer_item_strategies, 0,
// DRAWER_ITEM_STRATEGIES));
- items.add(new DrawerFragment.DrawerItem(R.string.drawer_item_logcat, 0,
- DRAWER_ITEM_LOGCAT));
items.add(new DrawerFragment.DrawerItem(R.string.drawer_item_wifidirect, 0, DRAWER_ITEM_WIFIDIRECT));
// TODO here we are preloading the NDNController singleton to avoid UI slowdown
@@ -161,9 +158,6 @@
// TODO: Placeholders; Fill these in when their fragments have been created
// case DRAWER_ITEM_STRATEGIES:
// break;
- case DRAWER_ITEM_LOGCAT:
- fragment = LogcatFragment.newInstance();
- break;
case DRAWER_ITEM_WIFIDIRECT:
fragment = WiFiDirectFragment.newInstance();
break;
@@ -182,11 +176,6 @@
}
@Override
- public void onDisplayLogcatSettings() {
- replaceContentFragmentWithBackstack(LogcatSettingsFragment.newInstance());
- }
-
- @Override
public void onFaceItemSelected(FaceStatus faceStatus) {
replaceContentFragmentWithBackstack(FaceStatusFragment.newInstance(faceStatus));
}
@@ -210,7 +199,6 @@
public static final int DRAWER_ITEM_FACES = 2;
public static final int DRAWER_ITEM_ROUTES = 3;
public static final int DRAWER_ITEM_PING = 4;
- //public static final int DRAWER_ITEM_STRATEGIES = 4;
- public static final int DRAWER_ITEM_LOGCAT = 5;
- public static final int DRAWER_ITEM_WIFIDIRECT = 6;
+ //public static final int DRAWER_ITEM_STRATEGIES = X;
+ public static final int DRAWER_ITEM_WIFIDIRECT = 5;
}
diff --git a/app/src/main/java/net/named_data/nfd/MainFragment.java b/app/src/main/java/net/named_data/nfd/MainFragment.java
index 276c6e1..0c6d4ee 100644
--- a/app/src/main/java/net/named_data/nfd/MainFragment.java
+++ b/app/src/main/java/net/named_data/nfd/MainFragment.java
@@ -1,6 +1,6 @@
/* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2015-2017 Regents of the University of California
+ * Copyright (c) 2015-2018 Regents of the University of California
* <p>
* This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
* See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -390,8 +390,8 @@
m_inInterestsView.setText(String.valueOf(fs.getNInInterests()));
m_outInterestsView.setText(String.valueOf(fs.getNOutInterests()));
- m_inDataView.setText(String.valueOf(fs.getNInDatas()));
- m_outDataView.setText(String.valueOf(fs.getNOutDatas()));
+ m_inDataView.setText(String.valueOf(fs.getNInData()));
+ m_outDataView.setText(String.valueOf(fs.getNOutData()));
m_inNacksView.setText(String.valueOf(fs.getNInNacks()));
m_outNacksView.setText(String.valueOf(fs.getNOutNacks()));
diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk
index 762c358..9310d31 100644
--- a/app/src/main/jni/Android.mk
+++ b/app/src/main/jni/Android.mk
@@ -4,9 +4,9 @@
include $(CLEAR_VARS)
LOCAL_MODULE := nfd-wrapper
LOCAL_SRC_FILES := nfd-wrapper.cpp
-LOCAL_SHARED_LIBRARIES := nfd-daemon ndn-cxx boost_system_shared boost_thread_shared
+LOCAL_SHARED_LIBRARIES := nfd_shared ndn_cxx_shared boost_system_shared boost_thread_shared boost_log_shared
LOCAL_LDLIBS := -llog -latomic
+LOCAL_CFLAGS := -DBOOST_LOG_DYN_LINK=1
include $(BUILD_SHARED_LIBRARY)
-include $(LOCAL_PATH_SAVED)/ndn-cxx.mk
-include $(LOCAL_PATH_SAVED)/nfd.mk
+$(call import-module,../packages/nfd/0.6.2-11-gd657d53)
diff --git a/app/src/main/jni/Application.mk b/app/src/main/jni/Application.mk
index 793e7c4..b0e4094 100644
--- a/app/src/main/jni/Application.mk
+++ b/app/src/main/jni/Application.mk
@@ -1,8 +1,8 @@
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
-APP_STL := gnustl_shared
-APP_CPPFLAGS += -fexceptions -frtti -std=c++11
+APP_STL := c++_shared
+APP_CPPFLAGS += -fexceptions -frtti -std=c++14
# -Wno-deprecated-declarations
-NDK_TOOLCHAIN_VERSION := 4.9
+NDK_TOOLCHAIN_VERSION := clang
APP_PLATFORM := android-23
diff --git a/app/src/main/jni/NFD b/app/src/main/jni/NFD
deleted file mode 160000
index e5abc94..0000000
--- a/app/src/main/jni/NFD
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit e5abc94540a8987ab8c2fc83f28d6073e2be0b96
diff --git a/app/src/main/jni/ndn-cxx b/app/src/main/jni/ndn-cxx
deleted file mode 160000
index f2e7a03..0000000
--- a/app/src/main/jni/ndn-cxx
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f2e7a0391eed1670691c1e0a7c644bc2430bb01c
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
deleted file mode 100644
index e79c69d..0000000
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef W_SRC_NDN_CXX_CONFIG_HPP_WAF
-#define W_SRC_NDN_CXX_CONFIG_HPP_WAF
-
-// Uncomment this after switch to clang/libc++
-// #define NDN_CXX_HAVE_STD_TO_STRING 1
-
-#define NDN_CXX_HAVE_VECTOR_INSERT_ERASE_CONST_ITERATOR 1
-#define NDN_CXX_HAVE_IS_DEFAULT_CONSTRUCTIBLE 1
-#define NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE 1
-#define NDN_CXX_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE 1
-#define NDN_CXX_HAVE_PTHREAD 1
-#define NDN_CXX_HAVE_RT 1
-#define NDN_CXX_HAVE_RTNETLINK 1
-#define NDN_CXX_HAVE_SQLITE3 1
-#define NDN_CXX_HAVE_OPENSSL 1
-#define NDN_CXX_SYSCONFDIR "./etc"
-#define NDN_CXX_NDEBUG 1
-#define NDEBUG 1
-#define HAVE_NDN_CXX_CUSTOM_LOGGER 1
-
-#endif /* W_SRC_NDN_CXX_CONFIG_HPP_WAF */
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.cpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.cpp
deleted file mode 100644
index 41cae15..0000000
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2016 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx library is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#include "ndn-cxx-custom-logger.hpp"
-#include "ndn-cxx-custom-logging.hpp"
-
-#include <cinttypes>
-#include <stdio.h>
-#include <type_traits>
-
-namespace ndn {
-namespace util {
-
-std::ostream&
-operator<<(std::ostream& os, LogLevel level)
-{
- switch (level) {
- case LogLevel::FATAL:
- return os << "FATAL";
- case LogLevel::NONE:
- return os << "NONE";
- case LogLevel::ERROR:
- return os << "ERROR";
- case LogLevel::WARN:
- return os << "WARN";
- case LogLevel::INFO:
- return os << "INFO";
- case LogLevel::DEBUG:
- return os << "DEBUG";
- case LogLevel::TRACE:
- return os << "TRACE";
- case LogLevel::ALL:
- return os << "ALL";
- }
-
- BOOST_THROW_EXCEPTION(std::invalid_argument("unknown log level " + to_string(static_cast<int>(level))));
-}
-
-LogLevel
-parseLogLevel(const std::string& s)
-{
- if (s == "FATAL")
- return LogLevel::FATAL;
- else if (s == "NONE")
- return LogLevel::NONE;
- else if (s == "ERROR")
- return LogLevel::ERROR;
- else if (s == "WARN")
- return LogLevel::WARN;
- else if (s == "INFO")
- return LogLevel::INFO;
- else if (s == "DEBUG")
- return LogLevel::DEBUG;
- else if (s == "TRACE")
- return LogLevel::TRACE;
- else if (s == "ALL")
- return LogLevel::ALL;
-
- BOOST_THROW_EXCEPTION(std::invalid_argument("unrecognized log level '" + s + "'"));
-}
-
-Logger::Logger(const std::string& name)
- : m_moduleName(name)
-{
- this->setLevel(LogLevel::NONE);
- Logging::addLogger(*this);
-}
-
-} // namespace util
-} // namespace ndn
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp
deleted file mode 100644
index c8595fe..0000000
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2017 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx library is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#ifndef NFD_ANDROID_NDN_CXX_ANDROID_NDN_CXX_CUSTOM_LOGGER_HPP
-#define NFD_ANDROID_NDN_CXX_ANDROID_NDN_CXX_CUSTOM_LOGGER_HPP
-
-#include "common.hpp"
-#include <sstream>
-#include <atomic>
-#include <android/log.h>
-
-namespace ndn {
-namespace util {
-
-/** \brief indicates the severity level of a log message
- */
-enum class LogLevel {
- FATAL = -1, ///< fatal (will be logged unconditionally)
- NONE = 0, ///< no messages
- ERROR = 1, ///< serious error messages
- WARN = 2, ///< warning messages
- INFO = 3, ///< informational messages
- DEBUG = 4, ///< debug messages
- TRACE = 5, ///< trace messages (most verbose)
- ALL = 255 ///< all messages
-};
-
-/** \brief output LogLevel as string
- * \throw std::invalid_argument unknown \p level
- */
-std::ostream&
-operator<<(std::ostream& os, LogLevel level);
-
-/** \brief parse LogLevel from string
- * \throw std::invalid_argument unknown level name
- */
-LogLevel
-parseLogLevel(const std::string& s);
-
-/** \brief represents a logger in logging facility
- * \note User should declare a new logger with \p NDN_LOG_INIT macro.
- */
-class Logger
-{
-public:
- explicit
- Logger(const std::string& name);
-
- const std::string&
- getModuleName() const
- {
- return m_moduleName;
- }
-
- bool
- isLevelEnabled(LogLevel level) const
- {
- return m_currentLevel.load(std::memory_order_relaxed) >= level;
- }
-
- void
- setLevel(LogLevel level)
- {
- m_currentLevel.store(level, std::memory_order_relaxed);
- }
-
-private:
- const std::string m_moduleName;
- std::atomic<LogLevel> m_currentLevel;
-};
-
-/** \brief declare a log module
- */
-#define NDN_LOG_INIT(name) \
- namespace { \
- inline ::ndn::util::Logger& getNdnCxxLogger() \
- { \
- static ::ndn::util::Logger logger(BOOST_STRINGIZE(name)); \
- return logger; \
- } \
- } \
- struct ndn_cxx__allow_trailing_semicolon
-
-#define NDN_LOG(level, androidLevel, msg, expression) \
- do { \
- if (getNdnCxxLogger().isLevelEnabled(::ndn::util::LogLevel::level)) { \
- std::ostringstream os; \
- os << expression; \
- __android_log_print(ANDROID_LOG_##androidLevel, \
- getNdnCxxLogger().getModuleName().c_str(), "%s", os.str().c_str()); \
- } \
- } while (false)
-
-#define NDN_LOG_TRACE(expression) NDN_LOG(TRACE, VERBOSE, TRACE, expression)
-#define NDN_LOG_DEBUG(expression) NDN_LOG(DEBUG, DEBUG, DEBUG, expression)
-#define NDN_LOG_INFO(expression) NDN_LOG(INFO, INFO, INFO, expression)
-#define NDN_LOG_WARN(expression) NDN_LOG(WARN, WARN, WARNING, expression)
-#define NDN_LOG_ERROR(expression) NDN_LOG(ERROR, ERROR, ERROR, expression)
-#define NDN_LOG_FATAL(expression) NDN_LOG(FATAL, FATAL, FATAL, expression)
-
-} // namespace util
-} // namespace ndn
-
-#endif // NFD_ANDROID_NDN_CXX_ANDROID_NDN_CXX_CUSTOM_LOGGER_HPP
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logging.cpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logging.cpp
deleted file mode 100644
index 845d412..0000000
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logging.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2016 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx library is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#include "ndn-cxx-custom-logging.hpp"
-#include "ndn-cxx-custom-logger.hpp"
-
-#include <cstdlib>
-#include <sstream>
-
-namespace ndn {
-namespace util {
-
-static const LogLevel INITIAL_DEFAULT_LEVEL = LogLevel::NONE;
-
-Logging&
-Logging::get()
-{
- // Initialization of block-scope variables with static storage duration is thread-safe.
- // See ISO C++ standard [stmt.dcl]/4
- static Logging instance;
- return instance;
-}
-
-Logging::Logging()
-{
-}
-
-void
-Logging::addLoggerImpl(Logger& logger)
-{
- std::lock_guard<std::mutex> lock(m_mutex);
-
- const std::string& moduleName = logger.getModuleName();
- m_loggers.insert({moduleName, &logger});
-
- auto levelIt = m_enabledLevel.find(moduleName);
- if (levelIt == m_enabledLevel.end()) {
- levelIt = m_enabledLevel.find("*");
- }
- LogLevel level = levelIt == m_enabledLevel.end() ? INITIAL_DEFAULT_LEVEL : levelIt->second;
- logger.setLevel(level);
-}
-
-void
-Logging::setLevelImpl(const std::string& moduleName, LogLevel level)
-{
- std::lock_guard<std::mutex> lock(m_mutex);
-
- if (moduleName == "*") {
- this->setDefaultLevel(level);
- return;
- }
-
- m_enabledLevel[moduleName] = level;
- auto range = m_loggers.equal_range(moduleName);
- for (auto i = range.first; i != range.second; ++i) {
- i->second->setLevel(level);
- }
-}
-
-void
-Logging::setDefaultLevel(LogLevel level)
-{
- m_enabledLevel.clear();
- m_enabledLevel["*"] = level;
-
- for (auto i = m_loggers.begin(); i != m_loggers.end(); ++i) {
- i->second->setLevel(level);
- }
-}
-
-void
-Logging::setLevelImpl(const std::string& config)
-{
- std::stringstream ss(config);
- std::string configModule;
- while (std::getline(ss, configModule, ':')) {
- size_t ind = configModule.find('=');
- if (ind == std::string::npos) {
- BOOST_THROW_EXCEPTION(std::invalid_argument("malformed logging config: '=' is missing"));
- }
-
- std::string moduleName = configModule.substr(0, ind);
- LogLevel level = parseLogLevel(configModule.substr(ind+1));
-
- this->setLevelImpl(moduleName, level);
- }
-}
-
-} // namespace util
-} // namespace ndn
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logging.hpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logging.hpp
deleted file mode 100644
index b59b927..0000000
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logging.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2016 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx library is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#ifndef NFD_ANDROID_NDN_CXX_ANDROID_NDN_CXX_CUSTOM_LOGGING_HPP
-#define NFD_ANDROID_NDN_CXX_ANDROID_NDN_CXX_CUSTOM_LOGGING_HPP
-
-#include "common.hpp"
-
-#include <mutex>
-#include <unordered_map>
-
-namespace ndn {
-namespace util {
-
-enum class LogLevel;
-class Logger;
-
-/** \brief controls the logging facility
- *
- * \note Public static methods are thread safe.
- * Non-public methods are not guaranteed to be thread safe.
- */
-class Logging : noncopyable
-{
-public:
- /** \brief register a new logger
- * \note App should declare a new logger with \p NDN_LOG_INIT macro.
- */
- static void
- addLogger(Logger& logger);
-
- /** \brief set severity level
- * \param moduleName logger name, or "*" for default level
- * \param level minimum severity level
- *
- * Log messages are output only if its severity is greater than the set minimum severity level.
- * Initial default severity level is \p LogLevel::NONE which enables FATAL only.
- *
- * Changing the default level overwrites individual settings.
- */
- static void
- setLevel(const std::string& moduleName, LogLevel level);
-
- /** \brief set severity levels with a config string
- * \param config colon-separate key=value pairs
- * \throw std::invalid_argument config string is malformed
- *
- * \code
- * Logging::setSeverityLevels("*=INFO:Face=DEBUG:NfdController=WARN");
- * \endcode
- * is equivalent to
- * \code
- * Logging::setSeverityLevel("*", LogLevel::INFO);
- * Logging::setSeverityLevel("Face", LogLevel::DEBUG);
- * Logging::setSeverityLevel("NfdController", LogLevel::WARN);
- * \endcode
- */
- static void
- setLevel(const std::string& config);
-
-private:
- Logging();
-
- void
- addLoggerImpl(Logger& logger);
-
- void
- setLevelImpl(const std::string& moduleName, LogLevel level);
-
- void
- setDefaultLevel(LogLevel level);
-
- void
- setLevelImpl(const std::string& config);
-
-NDN_CXX_PUBLIC_WITH_TESTS_ELSE_PRIVATE:
- static Logging&
- get();
-
-private:
- std::mutex m_mutex;
- std::unordered_map<std::string, LogLevel> m_enabledLevel; ///< moduleName => minimum level
- std::unordered_multimap<std::string, Logger*> m_loggers; ///< moduleName => logger
-};
-
-inline void
-Logging::addLogger(Logger& logger)
-{
- get().addLoggerImpl(logger);
-}
-
-inline void
-Logging::setLevel(const std::string& moduleName, LogLevel level)
-{
- get().setLevelImpl(moduleName, level);
-}
-
-inline void
-Logging::setLevel(const std::string& config)
-{
- get().setLevelImpl(config);
-}
-
-
-} // namespace util
-} // namespace ndn
-
-#endif // NFD_ANDROID_NDN_CXX_ANDROID_NDN_CXX_CUSTOM_LOGGING_HPP
diff --git a/app/src/main/jni/ndn-cxx-android/version.hpp b/app/src/main/jni/ndn-cxx-android/version.hpp
deleted file mode 100644
index 4ab8d5d..0000000
--- a/app/src/main/jni/ndn-cxx-android/version.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2017 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx library is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#ifndef NDN_VERSION_HPP
-#define NDN_VERSION_HPP
-
-namespace ndn {
-
-/** ndn-cxx version follows Semantic Versioning 2.0.0 specification
- * http://semver.org/
- */
-
-/** \brief ndn-cxx version represented as an integer
- *
- * MAJOR*1000000 + MINOR*1000 + PATCH
- */
-#define NDN_CXX_VERSION 6000
-
-/** \brief ndn-cxx version represented as a string
- *
- * MAJOR.MINOR.PATCH
- */
-#define NDN_CXX_VERSION_STRING "0.6.0"
-
-/** \brief ndn-cxx version string, including git commit information, if ndn-cxx is build from
- * specific git commit
- *
- * NDN_CXX_VERSION_BUILD_STRING is obtained using the following command (`ndn-cxx-` prefix is
- * afterwards removed):
- *
- * `git describe --match 'ndn-cxx-*'`
- *
- * When ndn-cxx is built not from git, NDN_CXX_VERSION_BUILD_STRING equals NDN_CXX_VERSION_STRING
- *
- * MAJOR.MINOR.PATCH(-release-candidate-tag)(-(number-of-commits-since-tag)-COMMIT-HASH)
- *
- * Example, 0.1.0-rc1-1-g5c86570
- */
-#define NDN_CXX_VERSION_BUILD_STRING "0.6.0"
-
-/// MAJOR version
-#define NDN_CXX_VERSION_MAJOR 0
-/// MINOR version
-#define NDN_CXX_VERSION_MINOR 6
-/// PATCH version
-#define NDN_CXX_VERSION_PATCH 0
-
-} // namespace ndn
-
-#endif // NDN_VERSION_HPP
diff --git a/app/src/main/jni/ndn-cxx.mk b/app/src/main/jni/ndn-cxx.mk
deleted file mode 100644
index d12a5b6..0000000
--- a/app/src/main/jni/ndn-cxx.mk
+++ /dev/null
@@ -1,173 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-LOCAL_PATH_SAVED := $(LOCAL_PATH)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := ndn-cxx
-NDN_CXX_BOOST_LIBS = system filesystem date_time iostreams program_options chrono random
-LOCAL_SHARED_LIBRARIES := libcrypto_shared libssl_shared $(addsuffix _shared,$(addprefix boost_,$(NDN_CXX_BOOST_LIBS)))
-LOCAL_STATIC_LIBRARIES := sqlite3_static boost_regex_static
-NDN_CXX_SRC_FILES := \
- data.cpp \
- delegation-list.cpp \
- delegation.cpp \
- encoding/block-helpers.cpp \
- encoding/block.cpp \
- encoding/buffer-stream.cpp \
- encoding/buffer.cpp \
- encoding/encoder.cpp \
- encoding/estimator.cpp \
- encoding/nfd-constants.cpp \
- encoding/tlv.cpp \
- exclude.cpp \
- face.cpp \
- ims/in-memory-storage-entry.cpp \
- ims/in-memory-storage-fifo.cpp \
- ims/in-memory-storage-lfu.cpp \
- ims/in-memory-storage-lru.cpp \
- ims/in-memory-storage-persistent.cpp \
- ims/in-memory-storage.cpp \
- interest-filter.cpp \
- interest.cpp \
- key-locator.cpp \
- link.cpp \
- lp/cache-policy.cpp \
- lp/nack-header.cpp \
- lp/nack.cpp \
- lp/packet.cpp \
- meta-info.cpp \
- mgmt/control-response.cpp \
- mgmt/dispatcher.cpp \
- mgmt/nfd/channel-status.cpp \
- mgmt/nfd/command-options.cpp \
- mgmt/nfd/control-command.cpp \
- mgmt/nfd/control-parameters.cpp \
- mgmt/nfd/controller.cpp \
- mgmt/nfd/face-event-notification.cpp \
- mgmt/nfd/face-monitor.cpp \
- mgmt/nfd/face-query-filter.cpp \
- mgmt/nfd/face-status.cpp \
- mgmt/nfd/fib-entry.cpp \
- mgmt/nfd/forwarder-status.cpp \
- mgmt/nfd/rib-entry.cpp \
- mgmt/nfd/status-dataset.cpp \
- mgmt/nfd/strategy-choice.cpp \
- mgmt/status-dataset-context.cpp \
- name-component.cpp \
- name.cpp \
- net/address-converter.cpp \
- net/detail/link-type-helper.cpp \
- net/detail/linux-if-constants.cpp \
- net/detail/network-monitor-impl-rtnl.cpp \
- net/dns.cpp \
- net/ethernet.cpp \
- net/face-uri.cpp \
- net/network-address.cpp \
- net/network-interface.cpp \
- net/network-monitor-stub.cpp \
- net/network-monitor.cpp \
- packet-base.cpp \
- security/command-interest-signer.cpp \
- security/detail/openssl-helper.cpp \
- security/digest-sha256.cpp \
- security/key-params.cpp \
- security/pib/certificate-container.cpp \
- security/pib/detail/identity-impl.cpp \
- security/pib/detail/key-impl.cpp \
- security/pib/identity-container.cpp \
- security/pib/identity.cpp \
- security/pib/key-container.cpp \
- security/pib/key.cpp \
- security/pib/pib-memory.cpp \
- security/pib/pib-sqlite3.cpp \
- security/pib/pib.cpp \
- security/safe-bag.cpp \
- security/security-common.cpp \
- security/signature-sha256-with-ecdsa.cpp \
- security/signature-sha256-with-rsa.cpp \
- security/signing-helpers.cpp \
- security/signing-info.cpp \
- security/tpm/back-end-file.cpp \
- security/tpm/back-end-mem.cpp \
- security/tpm/back-end.cpp \
- security/tpm/key-handle-mem.cpp \
- security/tpm/key-handle.cpp \
- security/tpm/tpm.cpp \
- security/transform/base64-decode.cpp \
- security/transform/base64-encode.cpp \
- security/transform/block-cipher.cpp \
- security/transform/bool-sink.cpp \
- security/transform/buffer-source.cpp \
- security/transform/digest-filter.cpp \
- security/transform/hex-decode.cpp \
- security/transform/hex-encode.cpp \
- security/transform/hmac-filter.cpp \
- security/transform/private-key.cpp \
- security/transform/public-key.cpp \
- security/transform/signer-filter.cpp \
- security/transform/step-source.cpp \
- security/transform/stream-sink.cpp \
- security/transform/stream-source.cpp \
- security/transform/strip-space.cpp \
- security/transform/transform-base.cpp \
- security/transform/verifier-filter.cpp \
- security/v2/additional-description.cpp \
- security/v2/certificate-bundle-fetcher.cpp \
- security/v2/certificate-cache.cpp \
- security/v2/certificate-fetcher-direct-fetch.cpp \
- security/v2/certificate-fetcher-from-network.cpp \
- security/v2/certificate-fetcher-offline.cpp \
- security/v2/certificate-fetcher.cpp \
- security/v2/certificate-storage.cpp \
- security/v2/certificate.cpp \
- security/v2/key-chain.cpp \
- security/v2/trust-anchor-container.cpp \
- security/v2/trust-anchor-group.cpp \
- security/v2/validation-error.cpp \
- security/v2/validation-policy-command-interest.cpp \
- security/v2/validation-policy-config.cpp \
- security/v2/validation-policy-simple-hierarchy.cpp \
- security/v2/validation-policy.cpp \
- security/v2/validation-state.cpp \
- security/v2/validator-config/checker.cpp \
- security/v2/validator-config/filter.cpp \
- security/v2/validator-config/name-relation.cpp \
- security/v2/validator-config/rule.cpp \
- security/v2/validator.cpp \
- security/validator-config.cpp \
- security/validator-null.cpp \
- security/validity-period.cpp \
- security/verification-helpers.cpp \
- selectors.cpp \
- signature-info.cpp \
- signature.cpp \
- transport/tcp-transport.cpp \
- transport/transport.cpp \
- transport/unix-transport.cpp \
- util/config-file.cpp \
- util/dummy-client-face.cpp \
- util/indented-stream.cpp \
- util/io.cpp \
- util/notification-subscriber.cpp \
- util/random.cpp \
- util/regex/regex-top-matcher.cpp \
- util/scheduler-scoped-event-id.cpp \
- util/scheduler.cpp \
- util/segment-fetcher.cpp \
- util/sha256.cpp \
- util/signal/connection.cpp \
- util/signal/scoped-connection.cpp \
- util/sqlite3-statement.cpp \
- util/string-helper.cpp \
- util/time-unit-test-clock.cpp \
- util/time.cpp \
- ../../ndn-cxx-android/ndn-cxx-custom-logger.cpp \
- ../../ndn-cxx-android/ndn-cxx-custom-logging.cpp
-LOCAL_SRC_FILES := $(addprefix ndn-cxx/src/,$(NDN_CXX_SRC_FILES))
-LOCAL_CPPFLAGS := -I$(LOCAL_PATH)/ndn-cxx/src -I$(LOCAL_PATH)/ndn-cxx-android -I$(LOCAL_PATH)/../../../build/generated/source/ndn-cxx
-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/ndn-cxx-android $(LOCAL_PATH)/../../../build/generated/source/include
-LOCAL_LDLIBS := -llog -latomic
-include $(BUILD_SHARED_LIBRARY)
-
-$(call import-module,../packages/boost/1.65.1)
-$(call import-module,../packages/sqlite/3.18.0)
-$(call import-module,../packages/openssl/1.0.2m)
diff --git a/app/src/main/jni/nfd-android/core/config.hpp b/app/src/main/jni/nfd-android/core/config.hpp
deleted file mode 100644
index 30c61c2..0000000
--- a/app/src/main/jni/nfd-android/core/config.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef W_CONFIG_HPP_WAF
-#define W_CONFIG_HPP_WAF
-
-#define HAVE_IS_DEFAULT_CONSTRUCTIBLE 1
-#define HAVE_IS_MOVE_CONSTRUCTIBLE 1
-#define HAVE_LIBRT
-#define HAVE_LIBRESOLV
-// #define HAVE_IFADDRS_H 1
-/*#undef HAVE_UNIX_SOCKETS*/
-#define HAVE_WEBSOCKET 1
-#define _WEBSOCKETPP_CPP11_STL_ 1
-#define DEFAULT_CONFIG_FILE "./nfd.conf"
-#define HAVE_CUSTOM_LOGGER 1
-#define NDEBUG 1
-
-#define BOOST_LOG_DYN_LINK 1
-
-#endif /* W_CONFIG_HPP_WAF */
diff --git a/app/src/main/jni/nfd-android/core/version.hpp b/app/src/main/jni/nfd-android/core/version.hpp
deleted file mode 100644
index 19a9d22..0000000
--- a/app/src/main/jni/nfd-android/core/version.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017, Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology,
- * The University of Memphis.
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NFD_CORE_VERSION_HPP
-#define NFD_CORE_VERSION_HPP
-
-namespace nfd {
-
-/** NFD version follows Semantic Versioning 2.0.0 specification
- * http://semver.org/
- */
-
-// To change version number, modify VERSION variable in top-level wscript.
-
-/** \brief NFD version represented as an integer
- *
- * MAJOR*1000000 + MINOR*1000 + PATCH
- */
-#define NFD_VERSION 6000
-
-/** \brief NFD version represented as a string
- *
- * MAJOR.MINOR.PATCH
- */
-#define NFD_VERSION_STRING "0.6.0"
-
-/** \brief NFD version string, including git commit information, if NFD is build from
- * specific git commit
- *
- * NFD_VERSION_BUILD_STRING is obtained using the following command (`NFD-` prefix is
- * afterwards removed):
- *
- * `git describe --match 'NFD-*'`
- *
- * When NFD is built not from git, NFD_VERSION_BUILD_STRING equals NFD_VERSION_STRING
- *
- * MAJOR.MINOR.PATCH(-release-candidate-tag)(-(number-of-commits-since-tag)-COMMIT-HASH)
- *
- * Example, 0.1.0-rc1-1-g5c86570
- */
-#define NFD_VERSION_BUILD_STRING "0.6.0"
-
-/// MAJOR version
-#define NFD_VERSION_MAJOR 0
-/// MINOR version
-#define NFD_VERSION_MINOR 6
-/// PATCH version
-#define NFD_VERSION_PATCH 0
-
-} // namespace nfd
-
-#endif // NFD_CORE_VERSION_HPP
diff --git a/app/src/main/jni/nfd-android/custom-logger-factory.cpp b/app/src/main/jni/nfd-android/custom-logger-factory.cpp
deleted file mode 100644
index 436bdf1..0000000
--- a/app/src/main/jni/nfd-android/custom-logger-factory.cpp
+++ /dev/null
@@ -1,198 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017, Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology,
- * The University of Memphis.
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "custom-logger-factory.hpp"
-
-#include <boost/algorithm/string/case_conv.hpp>
-
-namespace nfd {
-
-NFD_LOG_INIT("LoggerFactory");
-
-LoggerFactory&
-LoggerFactory::getInstance()
-{
- static LoggerFactory globalLoggerFactory;
-
- return globalLoggerFactory;
-}
-
-LoggerFactory::LoggerFactory()
- : m_defaultLevel(LOG_INFO)
-{
- m_levelNames["NONE"] = LOG_NONE;
- m_levelNames["ERROR"] = LOG_ERROR;
- m_levelNames["WARN"] = LOG_WARN;
- m_levelNames["INFO"] = LOG_INFO;
- m_levelNames["DEBUG"] = LOG_DEBUG;
- m_levelNames["TRACE"] = LOG_TRACE;
- m_levelNames["ALL"] = LOG_ALL;
-}
-
-void
-LoggerFactory::setConfigFile(ConfigFile& config)
-{
- config.addSectionHandler("log", bind(&LoggerFactory::onConfig, this, _1, _2, _3));
-}
-
-LogLevel
-LoggerFactory::parseLevel(const std::string& level)
-{
- std::string upperLevel = level;
- boost::to_upper(upperLevel);
-
- // std::cerr << "parsing level: " << upperLevel << std::endl;;
- // std::cerr << "# levels: " << m_levelNames.size() << std::endl;
- // std::cerr << m_levelNames.begin()->first << std::endl;
-
- LevelMap::const_iterator levelIt = m_levelNames.find(upperLevel);
- if (levelIt != m_levelNames.end()) {
- return levelIt->second;
- }
- try {
- uint32_t levelNo = boost::lexical_cast<uint32_t>(level);
-
- if ((boost::lexical_cast<uint32_t>(LOG_NONE) <= levelNo &&
- levelNo <= boost::lexical_cast<uint32_t>(LOG_TRACE)) ||
- levelNo == LOG_ALL) {
- return static_cast<LogLevel>(levelNo);
- }
- }
- catch (const boost::bad_lexical_cast& error) {
- }
- throw LoggerFactory::Error("Unsupported logging level \"" + level + "\"");
-}
-
-LogLevel
-LoggerFactory::extractLevel(const ConfigSection& item, const std::string& key)
-{
- std::string levelString;
- try {
- levelString = item.get_value<std::string>();
- }
- catch (const boost::property_tree::ptree_error& error) {
- }
-
- if (levelString.empty()) {
- throw LoggerFactory::Error("No logging level found for option \"" + key + "\"");
- }
-
- return parseLevel(levelString);
-}
-
-void
-LoggerFactory::onConfig(const ConfigSection& section,
- bool isDryRun,
- const std::string& filename)
-{
-// log
-// {
-// ; default_level specifies the logging level for modules
-// ; that are not explicitly named. All debugging levels
-// ; listed above the selected value are enabled.
-//
-// default_level INFO
-//
-// ; You may also override the default for specific modules:
-//
-// FibManager DEBUG
-// Forwarder WARN
-// }
-
- if (!isDryRun) {
- ConfigSection::const_assoc_iterator item = section.find("default_level");
- if (item != section.not_found()) {
- LogLevel level = extractLevel(item->second, "default_level");
- setDefaultLevel(level);
- }
- else {
- setDefaultLevel(LOG_INFO);
- }
- }
-
- for (ConfigSection::const_iterator item = section.begin();
- item != section.end();
- ++item) {
- LogLevel level = extractLevel(item->second, item->first);
-
- if (item->first == "default_level") {
- // do nothing
- }
- else {
- LoggerMap::iterator loggerIt = m_loggers.find(item->first);
- if (loggerIt == m_loggers.end()) {
- NFD_LOG_DEBUG("Failed to configure logging level for module \"" <<
- item->first << "\" (module not found)");
- }
- else if (!isDryRun) {
- // std::cerr << "changing level for module " << item->first << " to " << level << std::endl;
- loggerIt->second.setLogLevel(level);
- }
- }
- }
-}
-
-void
-LoggerFactory::setDefaultLevel(LogLevel level)
-{
- // std::cerr << "changing to default_level " << level << std::endl;
-
- m_defaultLevel = level;
- for (LoggerMap::iterator i = m_loggers.begin(); i != m_loggers.end(); ++i) {
- // std::cerr << "changing " << i->first << " to default " << m_defaultLevel << std::endl;
- i->second.setLogLevel(m_defaultLevel);
- }
-}
-
-Logger&
-LoggerFactory::create(const std::string& moduleName)
-{
- return LoggerFactory::getInstance().createLogger(moduleName);
-}
-
-Logger&
-LoggerFactory::createLogger(const std::string& moduleName)
-{
- // std::cerr << "creating logger for " << moduleName
- // << " with level " << m_defaultLevel << std::endl;
-
- std::pair<LoggerMap::iterator, bool> loggerIt =
- m_loggers.insert(NameAndLogger(moduleName, Logger(moduleName, m_defaultLevel)));
-
- return loggerIt.first->second;
-}
-
-std::list<std::string>
-LoggerFactory::getModules() const
-{
- std::list<std::string> modules;
- for (LoggerMap::const_iterator i = m_loggers.begin(); i != m_loggers.end(); ++i) {
- modules.push_back(i->first);
- }
-
- return modules;
-}
-
-} // namespace nfd
diff --git a/app/src/main/jni/nfd-android/custom-logger-factory.hpp b/app/src/main/jni/nfd-android/custom-logger-factory.hpp
deleted file mode 100644
index f158b81..0000000
--- a/app/src/main/jni/nfd-android/custom-logger-factory.hpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016, Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology,
- * The University of Memphis.
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NFD_ANDROID_CUSTOM_LOGGER_FACTORY_HPP
-#define NFD_ANDROID_CUSTOM_LOGGER_FACTORY_HPP
-
-#include "core/common.hpp"
-
-#include "core/config-file.hpp"
-#include "core/logger.hpp"
-
-namespace nfd {
-
-class LoggerFactory : noncopyable
-{
-public:
-
- class Error : public std::runtime_error
- {
- public:
- explicit
- Error(const std::string& error)
- : std::runtime_error(error)
- {
- }
- };
-
- static LoggerFactory&
- getInstance();
-
- void
- setConfigFile(ConfigFile& config);
-
- void
- onConfig(const ConfigSection& section, bool isDryRun, const std::string& filename);
-
- std::list<std::string>
- getModules() const;
-
- static Logger&
- create(const std::string& moduleName);
-
-
-PUBLIC_WITH_TESTS_ELSE_PRIVATE:
-
- // these methods are used during unit-testing
-
- LogLevel
- getDefaultLevel() const;
-
- void
- setDefaultLevel(LogLevel level);
-
-private:
-
- LoggerFactory();
-
- Logger&
- createLogger(const std::string& moduleName);
-
- LogLevel
- parseLevel(const std::string& level);
-
- LogLevel
- extractLevel(const ConfigSection& item, const std::string& key);
-
-private:
-
- typedef std::map<std::string, LogLevel> LevelMap;
- typedef std::pair<std::string, LogLevel> NameAndLevel;
-
- LevelMap m_levelNames;
-
- typedef std::map<std::string, Logger> LoggerMap;
- typedef std::pair<std::string, Logger> NameAndLogger;
-
- LoggerMap m_loggers;
-
- LogLevel m_defaultLevel;
-};
-
-inline LogLevel
-LoggerFactory::getDefaultLevel() const
-{
- return m_defaultLevel;
-}
-
-} // namespace nfd
-
-#endif // NFD_ANDROID_CUSTOM_LOGGER_FACTORY_HPP
diff --git a/app/src/main/jni/nfd-android/custom-logger.cpp b/app/src/main/jni/nfd-android/custom-logger.cpp
deleted file mode 100644
index d5e7ca1..0000000
--- a/app/src/main/jni/nfd-android/custom-logger.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016, Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology,
- * The University of Memphis.
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "custom-logger.hpp"
-
-namespace nfd {
-
-Logger::Logger(const std::string& name, LogLevel level)
- : m_moduleName(name)
- , m_enabledLogLevel(level)
-{
-}
-
-} // namespace nfd
diff --git a/app/src/main/jni/nfd-android/custom-logger.hpp b/app/src/main/jni/nfd-android/custom-logger.hpp
deleted file mode 100644
index 86ed64c..0000000
--- a/app/src/main/jni/nfd-android/custom-logger.hpp
+++ /dev/null
@@ -1,141 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017, Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology,
- * The University of Memphis.
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NFD_ANDROID_CUSTOM_LOGGER_HPP
-#define NFD_ANDROID_CUSTOM_LOGGER_HPP
-
-#include "core/common.hpp"
-#include <sstream>
-#include <android/log.h>
-
-namespace nfd {
-
-/** \brief indicates a log level
- * \note This type is internal. Logger should be accessed through NFD_LOG_* macros.
- */
-enum LogLevel {
- LOG_FATAL = -1, // fatal (will be logged unconditionally)
- LOG_NONE = 0, // no messages
- LOG_ERROR = 1, // serious error messages
- LOG_WARN = 2, // warning messages
- LOG_INFO = 3, // informational messages
- LOG_DEBUG = 4, // debug messages
- LOG_TRACE = 5, // trace messages (most verbose)
- LOG_ALL = 255 // all messages
-};
-
-/** \brief provides logging for a module
- * \note This type is internal. Logger should be accessed through NFD_LOG_* macros.
- * \note This type is copyable because logger can be declared as a field of
- * (usually template) classes, and shouldn't prevent those classes to be copyable.
- */
-class Logger
-{
-public:
- Logger(const std::string& name, LogLevel level);
-
- bool
- isEnabled(LogLevel level) const
- {
- return m_enabledLogLevel >= level;
- }
-
- void
- setLogLevel(LogLevel level)
- {
- m_enabledLogLevel = level;
- }
-
- const std::string&
- getName() const
- {
- return m_moduleName;
- }
-
- void
- setName(const std::string& name)
- {
- m_moduleName = name;
- }
-
-private:
- std::string m_moduleName;
- LogLevel m_enabledLogLevel;
-};
-
-inline std::ostream&
-operator<<(std::ostream& output, const Logger& logger)
-{
- output << logger.getName();
- return output;
-}
-
-} // namespace nfd
-
-#include "core/logger-factory.hpp"
-
-namespace nfd {
-
-#define NFD_LOG_INIT(name) \
-static nfd::Logger& g_logger = nfd::LoggerFactory::create(name)
-
-#define NFD_LOG_INCLASS_DECLARE() \
-static nfd::Logger& g_logger
-
-#define NFD_LOG_INCLASS_DEFINE(cls, name) \
-nfd::Logger& cls::g_logger = nfd::LoggerFactory::create(name)
-
-#define NFD_LOG_INCLASS_TEMPLATE_DEFINE(cls, name) \
-template<class T> \
-nfd::Logger& cls<T>::g_logger = nfd::LoggerFactory::create(name)
-
-#define NFD_LOG_INCLASS_TEMPLATE_SPECIALIZATION_DEFINE(cls, specialization, name) \
-template<> \
-nfd::Logger& cls<specialization>::g_logger = nfd::LoggerFactory::create(name)
-
-#define NFD_LOG_INCLASS_2TEMPLATE_SPECIALIZATION_DEFINE(cls, s1, s2, name) \
-template<> \
-nfd::Logger& cls<s1, s2>::g_logger = nfd::LoggerFactory::create(name)
-
-#define NFD_LOG(nfdLevel, androidLevel, msg, expression) \
-do { \
- if (g_logger.isEnabled(::nfd::LOG_##nfdLevel)) { \
- std::ostringstream os; \
- os << expression; \
- __android_log_print(ANDROID_LOG_##androidLevel, \
- g_logger.getName().c_str(), "%s", os.str().c_str()); \
- } \
-} while (false)
-
-#define NFD_LOG_TRACE(expression) NFD_LOG(TRACE, VERBOSE, TRACE, expression)
-#define NFD_LOG_DEBUG(expression) NFD_LOG(DEBUG, DEBUG, DEBUG, expression)
-#define NFD_LOG_INFO(expression) NFD_LOG(INFO, INFO, INFO, expression)
-#define NFD_LOG_WARN(expression) NFD_LOG(WARN, WARN, WARNING, expression)
-#define NFD_LOG_ERROR(expression) NFD_LOG(ERROR, ERROR, ERROR, expression)
-#define NFD_LOG_FATAL(expression) NFD_LOG(FATAL, FATAL, FATAL, expression)
-
-} // namespace nfd
-
-#endif // NFD_ANDROID_CUSTOM_LOGGER_HPP
diff --git a/app/src/main/jni/nfd-wrapper.cpp b/app/src/main/jni/nfd-wrapper.cpp
index a04585e..918efce 100644
--- a/app/src/main/jni/nfd-wrapper.cpp
+++ b/app/src/main/jni/nfd-wrapper.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2015-2016 Regents of the University of California
+ * Copyright (c) 2015-2018 Regents of the University of California
*
* This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
* See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -22,17 +22,18 @@
#include "daemon/nfd.hpp"
#include "rib/service.hpp"
-#include "core/global-io.hpp"
#include "core/config-file.hpp"
+#include "core/global-io.hpp"
#include "core/logger.hpp"
#include "core/privilege-helper.hpp"
-#include <stdlib.h>
#include <boost/property_tree/info_parser.hpp>
#include <boost/thread.hpp>
#include <mutex>
+#include <ndn-cxx/util/logging.hpp>
+#include <stdlib.h>
-NFD_LOG_INIT("NfdWrapper");
+NFD_LOG_INIT(NfdWrapper);
namespace nfd {
@@ -48,104 +49,67 @@
void
resetGlobalIoService();
-
class Runner
{
public:
Runner()
: m_io(nullptr)
{
- std::string initialConfig =
- "general\n"
- "{\n"
- "}\n"
- "\n"
- "log\n"
- "{\n"
- " default_level ALL\n"
- " NameTree INFO\n"
- " BestRouteStrategy2 INFO\n"
- " InternalFace INFO\n"
- " Forwarder INFO\n"
- " ContentStore INFO\n"
- " DeadNonceList INFO\n"
- "}\n"
- "tables\n"
- "{\n"
- " cs_max_packets 100\n"
- "\n"
- " strategy_choice\n"
- " {\n"
- " / /localhost/nfd/strategy/best-route\n"
- " /localhost /localhost/nfd/strategy/multicast\n"
- " /localhost/nfd /localhost/nfd/strategy/best-route\n"
- " /ndn/broadcast /localhost/nfd/strategy/multicast\n"
- " /ndn/multicast /localhost/nfd/strategy/multicast\n"
- " }\n"
- "}\n"
- "\n"
- "face_system\n"
- "{\n"
- " tcp\n"
- " {\n"
- " listen yes\n"
- " port 6363\n"
- " enable_v4 yes\n"
- " enable_v6 yes\n"
- " }\n"
- "\n"
- " udp\n"
- " {\n"
- " port 6363\n"
- " enable_v4 yes\n"
- " enable_v6 yes\n"
- " idle_timeout 600\n"
- " keep_alive_interval 25\n"
- " mcast no\n"
- " }\n"
- " websocket\n"
- " {\n"
- " listen yes\n"
- " port 9696\n"
- " enable_v4 yes\n"
- " enable_v6 yes\n"
- " }\n"
- "}\n"
- "\n"
- "authorizations\n"
- "{\n"
- " authorize\n"
- " {\n"
- " certfile any\n"
- " privileges\n"
- " {\n"
- " faces\n"
- " fib\n"
- " strategy-choice\n"
- " }\n"
- " }\n"
- "}\n"
- "\n"
- "rib\n"
- "{\n"
- " localhost_security\n"
- " {\n"
- " trust-anchor\n"
- " {\n"
- " type any\n"
- " }\n"
- " }\n"
- "\n"
- " auto_prefix_propagate\n"
- " {\n"
- " cost 15\n"
- " timeout 10000\n"
- " refresh_interval 300\n"
- " base_retry_wait 50\n"
- " max_retry_wait 3600\n"
- " }\n"
- "}\n"
- "\n";
+ std::string initialConfig = R"CONF(
+ log
+ {
+ default_level ALL
+ }
+ tables
+ {
+ cs_max_packets 100
+ strategy_choice
+ {
+ / /localhost/nfd/strategy/best-route
+ /localhost /localhost/nfd/strategy/multicast
+ /localhost/nfd /localhost/nfd/strategy/best-route
+ /ndn/broadcast /localhost/nfd/strategy/multicast
+ /ndn/multicast /localhost/nfd/strategy/multicast
+ }
+ }
+ face_system
+ {
+ tcp
+ udp
+ {
+ mcast no
+ }
+ websocket
+ }
+ authorizations
+ {
+ authorize
+ {
+ certfile any
+ privileges
+ {
+ faces
+ fib
+ cs
+ strategy-choice
+ }
+ }
+ }
+ rib
+ {
+ localhost_security
+ {
+ trust-anchor
+ {
+ type any
+ }
+ }
+ auto_prefix_propagate
+ {
+ refresh_interval 300
+ }
+ }
+ )CONF";
std::istringstream input(initialConfig);
boost::property_tree::read_info(input, m_config);
@@ -308,7 +272,7 @@
jobject jModules = env->NewObject(jcLinkedList, jcLinkedListConstructor);
- for (const auto& module : nfd::LoggerFactory::getInstance().getModules()) {
+ for (const auto& module : ndn::util::Logging::getLoggerNames()) {
jstring jModule = env->NewStringUTF(module.c_str());
env->CallBooleanMethod(jModules, jcLinkedListAdd, jModule);
}
diff --git a/app/src/main/jni/nfd.mk b/app/src/main/jni/nfd.mk
deleted file mode 100644
index a2c145e..0000000
--- a/app/src/main/jni/nfd.mk
+++ /dev/null
@@ -1,131 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-LOCAL_PATH_SAVED := $(LOCAL_PATH)
-
-NFD_BOOST_LIBS = system filesystem chrono program_options random thread
-
-# nfd itself
-include $(CLEAR_VARS)
-LOCAL_MODULE := nfd-daemon
-LOCAL_SHARED_LIBRARIES := libssl_shared libcrypto_shared ndn-cxx $(addsuffix _shared,$(addprefix boost_,$(NFD_BOOST_LIBS)))
-NFD_DAEMON_SRC_FILES := \
- core/city-hash.cpp \
- core/config-file.cpp \
- core/global-io.cpp \
- core/manager-base.cpp \
- core/network-interface-predicate.cpp \
- core/network.cpp \
- core/privilege-helper.cpp \
- core/random.cpp \
- core/rtt-estimator.cpp \
- core/scheduler.cpp \
- ../nfd-android/custom-logger.cpp \
- ../nfd-android/custom-logger-factory.cpp \
- \
- daemon/face/channel.cpp \
- daemon/face/face-counters.cpp \
- daemon/face/face-system.cpp \
- daemon/face/face.cpp \
- daemon/face/generic-link-service.cpp \
- daemon/face/internal-face.cpp \
- daemon/face/internal-transport.cpp \
- daemon/face/link-service.cpp \
- daemon/face/lp-fragmenter.cpp \
- daemon/face/lp-reassembler.cpp \
- daemon/face/lp-reliability.cpp \
- daemon/face/multicast-udp-transport.cpp \
- daemon/face/null-face.cpp \
- daemon/face/protocol-factory.cpp \
- daemon/face/tcp-channel.cpp \
- daemon/face/tcp-factory.cpp \
- daemon/face/tcp-transport.cpp \
- daemon/face/transport.cpp \
- daemon/face/udp-channel.cpp \
- daemon/face/udp-factory.cpp \
- daemon/face/udp-protocol.cpp \
- daemon/face/unicast-udp-transport.cpp \
- daemon/face/websocket-channel.cpp \
- daemon/face/websocket-factory.cpp \
- daemon/face/websocket-transport.cpp \
- daemon/fw/access-strategy.cpp \
- daemon/fw/algorithm.cpp \
- daemon/fw/asf-measurements.cpp \
- daemon/fw/asf-probing-module.cpp \
- daemon/fw/asf-strategy.cpp \
- daemon/fw/best-route-strategy.cpp \
- daemon/fw/best-route-strategy2.cpp \
- daemon/fw/client-control-strategy.cpp \
- daemon/fw/face-table.cpp \
- daemon/fw/forwarder.cpp \
- daemon/fw/multicast-strategy.cpp \
- daemon/fw/ncc-strategy.cpp \
- daemon/fw/process-nack-traits.cpp \
- daemon/fw/retx-suppression-exponential.cpp \
- daemon/fw/retx-suppression-fixed.cpp \
- daemon/fw/strategy.cpp \
- daemon/fw/unsolicited-data-policy.cpp \
- daemon/main.cpp \
- daemon/mgmt/command-authenticator.cpp \
- daemon/mgmt/face-manager.cpp \
- daemon/mgmt/fib-manager.cpp \
- daemon/mgmt/forwarder-status-manager.cpp \
- daemon/mgmt/general-config-section.cpp \
- daemon/mgmt/nfd-manager-base.cpp \
- daemon/mgmt/strategy-choice-manager.cpp \
- daemon/mgmt/tables-config-section.cpp \
- daemon/nfd.cpp \
- daemon/table/cleanup.cpp \
- daemon/table/cs-entry-impl.cpp \
- daemon/table/cs-entry.cpp \
- daemon/table/cs-policy-lru.cpp \
- daemon/table/cs-policy-priority-fifo.cpp \
- daemon/table/cs-policy.cpp \
- daemon/table/cs.cpp \
- daemon/table/dead-nonce-list.cpp \
- daemon/table/fib-entry.cpp \
- daemon/table/fib-nexthop.cpp \
- daemon/table/fib.cpp \
- daemon/table/measurements-accessor.cpp \
- daemon/table/measurements-entry.cpp \
- daemon/table/measurements.cpp \
- daemon/table/name-tree-entry.cpp \
- daemon/table/name-tree-hashtable.cpp \
- daemon/table/name-tree-iterator.cpp \
- daemon/table/name-tree.cpp \
- daemon/table/network-region-table.cpp \
- daemon/table/pit-entry.cpp \
- daemon/table/pit-face-record.cpp \
- daemon/table/pit-in-record.cpp \
- daemon/table/pit-iterator.cpp \
- daemon/table/pit-out-record.cpp \
- daemon/table/pit.cpp \
- daemon/table/strategy-choice-entry.cpp \
- daemon/table/strategy-choice.cpp \
- daemon/table/strategy-info-host.cpp \
- \
- rib/auto-prefix-propagator.cpp \
- rib/fib-update.cpp \
- rib/fib-updater.cpp \
- rib/propagated-entry.cpp \
- rib/readvertise/client-to-nlsr-readvertise-policy.cpp \
- rib/readvertise/nfd-rib-readvertise-destination.cpp \
- rib/readvertise/readvertise-destination.cpp \
- rib/readvertise/readvertise.cpp \
- rib/readvertise/readvertised-route.cpp \
- rib/rib-entry.cpp \
- rib/rib-manager.cpp \
- rib/rib-update-batch.cpp \
- rib/rib-update.cpp \
- rib/rib.cpp \
- rib/route.cpp \
- rib/service.cpp
-LOCAL_SRC_FILES := $(addprefix NFD/,$(NFD_DAEMON_SRC_FILES))
-LOCAL_CPPFLAGS := \
- -I$(LOCAL_PATH)/nfd-android \
- -I$(LOCAL_PATH)/NFD \
- -I$(LOCAL_PATH)/NFD/core \
- -I$(LOCAL_PATH)/NFD/daemon \
- -I$(LOCAL_PATH)/NFD/rib \
- -I$(LOCAL_PATH)/NFD/websocketpp
-LOCAL_LDLIBS := -llog
-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/nfd-android $(LOCAL_PATH)/NFD
-include $(BUILD_SHARED_LIBRARY)