// Copyright 2020 Fuzhou Rockchip Electronics Co., Ltd. All rights reserved.  
 | 
// Use of this source code is governed by a BSD-style license that can be  
 | 
// found in the LICENSE file.  
 | 
  
 | 
#include <stdio.h>  
 | 
#include <stdlib.h>  
 | 
#include <string.h>  
 | 
#include <errno.h>  
 | 
#include <stdbool.h>  
 | 
#include <sys/types.h>  
 | 
#include <unistd.h>  
 | 
#include <ctype.h>  
 | 
#include <inttypes.h>  
 | 
#include <glib.h>  
 | 
#include <gdbus.h>  
 | 
  
 | 
#include "call_fun_ipc.h"  
 | 
#include "common.h"  
 | 
  
 | 
int examples(void* data);  
 | 
  
 | 
struct FunMap map[] = {  
 | 
    {"examples", &examples}  
 | 
};  
 | 
  
 | 
static void main_exit(void)  
 | 
{  
 | 
    printf("server %s\n", __func__);  
 | 
    call_fun_ipc_server_deinit();  
 | 
}  
 | 
  
 | 
void signal_crash_handler(int sig)  
 | 
{  
 | 
    exit(-1);  
 | 
}  
 | 
   
 | 
void signal_exit_handler(int sig)  
 | 
{  
 | 
    exit(0);  
 | 
}  
 | 
  
 | 
  
 | 
int examples(void* data)  
 | 
{  
 | 
    struct Examples_s *para = data;  
 | 
    printf("%s r = %d, g = %d, b = %d\n", __func__, para->r, para->g, para->b);  
 | 
    para->ret = 100;  
 | 
}  
 | 
  
 | 
int main( int argc , char ** argv)  
 | 
{  
 | 
    GMainLoop *main_loop;  
 | 
  
 | 
    atexit(main_exit);  
 | 
    signal(SIGTERM, signal_exit_handler);  
 | 
    signal(SIGINT, signal_exit_handler);  
 | 
    signal(SIGPIPE, SIG_IGN);  
 | 
    signal(SIGBUS, signal_crash_handler);  
 | 
    signal(SIGSEGV, signal_crash_handler);  
 | 
    signal(SIGFPE, signal_crash_handler);  
 | 
    signal(SIGABRT, signal_crash_handler);  
 | 
  
 | 
    call_fun_ipc_server_init(map, sizeof(map) / sizeof(struct FunMap), DBUS_NAME, DBUS_IF, DBUS_PATH, 0);  
 | 
  
 | 
    main_loop = g_main_loop_new(NULL, FALSE);  
 | 
    printf("call_fun_ipc_demo_server init\n");  
 | 
  
 | 
    g_main_loop_run(main_loop);  
 | 
    if (main_loop)  
 | 
        g_main_loop_unref(main_loop);  
 | 
  
 | 
    return 0;  
 | 
} 
 |