From 6358e611e09092ad121f4a85e548c0d9411ab09f Mon Sep 17 00:00:00 2001 From: "Angelo Mantellini (manangel)" Date: Tue, 6 Jun 2017 14:22:24 +0200 Subject: update applications to use new version libicnet Change-Id: I4b2381a13cf64488baf83056fc1fa11b359d1147 Signed-off-by: Angelo Mantellini (manangel) --- .../metis/ccnx/service/MetisForwarderService.java | 145 +++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 MetisForwarder/app/src/main/java/com/metis/ccnx/service/MetisForwarderService.java (limited to 'MetisForwarder/app/src/main/java/com/metis/ccnx/service') diff --git a/MetisForwarder/app/src/main/java/com/metis/ccnx/service/MetisForwarderService.java b/MetisForwarder/app/src/main/java/com/metis/ccnx/service/MetisForwarderService.java new file mode 100644 index 00000000..25d7c68a --- /dev/null +++ b/MetisForwarder/app/src/main/java/com/metis/ccnx/service/MetisForwarderService.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.metis.ccnx.service; + +import android.app.Notification; +import android.app.Service; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.os.IBinder; +import android.util.Log; + +import com.metis.ccnx.supportlibrary.MetisForwarder; +import com.metis.ccnx.utility.Constants; +import com.metis.ccnx.utility.ResourcesEnumerator; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; + +public class MetisForwarderService extends Service { + private final static String TAG = "MetisForwarderService"; + + private static Thread sForwarderThread = null; + + public MetisForwarderService() { + } + + private String path; + + @Override + public IBinder onBind(Intent intent) { + return null; + } + + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + + MetisForwarder metisForwarder = MetisForwarder.getInstance(); + if (!metisForwarder.isRunning()) { + Log.d(TAG, "Starting Metis Forwarder"); + SharedPreferences sharedPreferences = getSharedPreferences(Constants.METIS_FORWARDER_PREFERENCES, MODE_PRIVATE); + String configuration = sharedPreferences.getString(ResourcesEnumerator.CONFIGURATION.key(), Constants.DEFAULT_CONFIGURATION); + String sourceIp = sharedPreferences.getString(ResourcesEnumerator.SOURCE_IP.key(), null); + String sourcePort = sharedPreferences.getString(ResourcesEnumerator.SOURCE_PORT.key(), null); + String nextHopIp = sharedPreferences.getString(ResourcesEnumerator.NEXT_HOP_IP.key(), null); + String nextHopPort = sharedPreferences.getString(ResourcesEnumerator.NEXT_HOP_PORT.key(), null); + String prefix = sharedPreferences.getString(ResourcesEnumerator.PREFIX.key(), null); + configuration = configuration.replace(Constants.SOURCE_IP, sourceIp); + configuration = configuration.replace(Constants.SOURCE_PORT, sourcePort); + configuration = configuration.replace(Constants.NEXT_HOP_IP, nextHopIp); + configuration = configuration.replace(Constants.NEXT_HOP_PORT, nextHopPort); + configuration = configuration.replace(Constants.PREFIX, prefix); + try { + String configurationDir = getPackageManager().getPackageInfo(getPackageName(), 0).applicationInfo.dataDir + + File.separator + Constants.CONFIGURATION_PATH; + File folder = new File(configurationDir); + if (!folder.exists()) { + folder.mkdirs(); + } + + writeToFile(configuration, configurationDir + File.separator + Constants.CONFIGURATION_FILE_NAME); + startForwarder(intent, configurationDir + File.separator + Constants.CONFIGURATION_FILE_NAME); + } catch (PackageManager.NameNotFoundException e) { + Log.w(TAG, "Error Package name not found ", e); + } + + + } else { + Log.d(TAG, "Metis Forwarder already running."); + } + return Service.START_STICKY; + } + + + @Override + public void onDestroy() { + MetisForwarder metisForwarder = MetisForwarder.getInstance(); + Log.d(TAG, "Destroying Metis Forwarder"); + if (metisForwarder.isRunning()) { + metisForwarder.stop(); + stopForeground(true); + } + super.onDestroy(); + } + + protected Runnable mForwarderRunner = new Runnable() { + + //private String path; + @Override + public void run() { + MetisForwarder metisForwarder = MetisForwarder.getInstance(); + metisForwarder.start(path); + } + + + }; + + private boolean writeToFile(String data, String path) { + Log.v(TAG, path + " " + data); + try (Writer writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(path), "utf-8"))) { + writer.write(data); + return true; + } catch (IOException e) { + Log.e(TAG, "File write failed: " + e.toString()); + return false; + } + } + + + private void startForwarder(Intent intent, String path) { + + int NOTIFICATION_ID = 12345; + startForeground(Constants.FOREGROUND_SERVICE, new Notification.Builder(this).build()); + MetisForwarder metisForwarder = MetisForwarder.getInstance(); + if (!metisForwarder.isRunning()) { + this.path = path; + sForwarderThread = new Thread(mForwarderRunner, "MetisForwarderRunner"); + sForwarderThread.start(); + } + + + + } + + + +} -- cgit 1.2.3-korg