IPC Gateway 设计
1. IPC Gateway对外提供的功能:
IPC的register/request/reply/notification服务。
2. IPC Gatew的实现原理:
各个具体的服务注册自己的回调函数,注册时提供服务自身的IPC Channel号。IPC Gateway 创建一个Map结构区记录各自的回调函数,当IPC Gateway接收到来字IPC layer的数据/消息,就会触发之前所注册的回调函数去处理数据。
Callback 函数的类型:
typedef void (*invoke_callback)(const void *ctx, UInt16 function, UInt8 *rx_data,Int32 len);
typedef void (*notification_callback)(UInt16 function, UInt8 *rx_data, Int32 len);
typedef void (*request_callback)(const void *ctx, UInt8 *rx_data, Int32 len);
3. 核心接口的设计:
/*Initialize the ipc gateway. Used to initialize the inside map. */
void ipc_gw_init();
/* Register callback function via channel number.*/
error_type ipc_gw_register(Int32 channel, notification_callback ntf_cb, request_callback req_cb);
/* Send request ipc message.*/
error_type ipc_gw_send_request(Int32 channel, UInt16 function,const UInt8 *data,Int32 len,const void *context, invoke_callback cb);
/*Send request ipc message without reply. */
error_type ipc_gw_send_request_no_reply(Int32 channel, UInt16 function,const UInt8 *data,Int32 len);
/* Reply the request after processing. */
error_type ipc_gw_send_reply(request_context_t *context, const UInt8 *data,Int32 len);
/* Send notification without reply. */
error_type ipc_gw_send_notification(Int32 channel, UInt16 function,const UInt8 *data,Int32 len);
/*Receive IPC message. Dispatch the message to respect registerd callback functions. */
error_type ipc_gw_receive_msg (Int32 channel, const UInt8* buf, Int32 len);
IPC Gateway 设计的更多相关文章
- [置顶] Android的IPC访问控制设计与实现
3.3.1 IPC钩子函数设计与实现 IPC Binder是Android最重要的进程间通信机制,因此,必须在此实施强制访问控制. 1. 修改secuirty.h 打开终端shell,输入指令“cd ...
- UNIX 进程间通讯(IPC)概念(Posix,System V IPC)
IPC(Inter-Process Communication,进程间通讯)可以有三种信息共享方式(随文件系统,随内核,随共享内存).(当然这里虽然说是进程间通讯,其实也是可以和线程相通的). 相对 ...
- [转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)
IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734更多 分类专栏: IPC网 ...
- spring cloud Gateway简单使用
一.引子 2年前有幸使用过一次Spring Cloud (1.5.9),那次用的是ZUUL做网关,没有使用Gateway做网关,一直是个小遗憾.终于在2年后的19年底再次使用Spring Cloud, ...
- Android:从程序员到架构师之路Ⅲ_高焕堂
Part-2: 从Android框架代码中学习设计 一 基础设计模式(Pattern)的代码:以Android为例 1.Template Method模式:IoC(控制反转)机制 2.Observer ...
- Cloud Foundry中 JasperReports service集成
Cloud Foundry作为业界第一个开源的PaaS解决方案,正越来越多的被业界接受和认可.随着PaaS的发展,Cloud Foundry顺应潮流,充分发挥开源项目的特点,到目前为止,已经支持了大批 ...
- 理解WebKit和Chromium: Chromium插件和扩展基础
转载请注明原文地址:http://blog.csdn.net/milado_nju ##概述 插件和扩展是一种扩充浏览器功能的技术,在之前我们介绍过NPAPI插件技术,在Chromium中,远远不只是 ...
- CNI bridge 插件实现代码分析
对于每个CNI 插件在执行函数cmdAdd之前的操作是完全一样的,即从环境变量和标准输入内读取配置.这在http://www.cnblogs.com/YaoDD/p/6410725.html这篇博文里 ...
- [转] 携程App网络服务通道治理和性能优化@2016
App网络服务的高可靠和低延迟对于无线业务稳定发展至关重要,过去两年来我们一直在持续优化App网络服务的性能,到今年Q2结束时基本完成了App网络服务通道治理和性能优化的阶段性目标,特此撰文总结其中的 ...
随机推荐
- 为什么MOBA和吃鸡类游戏不推荐用tcp协议 延迟不利于实时游戏
http://news.gamedog.cn/a/20171221/2287418.html 我们知道,不同类型的游戏因为玩法.竞技程度不一样,采用的同步算法不一样,对网络延迟的要求也不一样.例如,M ...
- Zookeeper下载方法
Zookeeper官网地址:http://zookeeper.apache.org/ Zookeeper下载链接:http://mirrors.tuna.tsinghua.ed ...
- Java Script 第二章.
对象: JavaScript中的所有事物都是对象:字符串,数组,数值,函数..... JavaScript中提供多个内建对象,比如说 String, Date, Array等等.对象只是带有属性和 ...
- 备份与恢复:MySQL系列之十二
一.备份策略赘述 1.备份的类型 类型1: 热备份:读写不受影响(MyISAM不支持热备,InnoDB支持热备) 温备份:仅可以执行读操作 冷备份:离线备份,读写操作均中止 类型2: 物理备份:复制数 ...
- JMeter - 如何测试REST API / 微服务
概述: 有许多方法和工具可用于测试REST API.当我需要测试REST API时,在查看了各种工具和选项之后,由于以下原因,我选择了JMeter. JMeter是免费和开源的. JMeter可以从C ...
- [Leetcode]006. ZigZag Conversion
public class Solution { public String convert(String s, int nRows) { if (s == null || s.isEmpty() || ...
- POJ 2891 Strange Way to Express Integers excrt/我真傻,真的
我真傻,真的 我单知道这道题在(b-b1)%d!=0时要判无解,哪成想自己却没有读完这组后面的数据而直接break掉...qwqfk 当 $ x \equiv b_1 ( mod a_1 ) ...
- Django-- CRM1客户建表与装饰器
一.CRM项目(1) 引入三个表:用户表,客户表,校区表,班级表,梳理逻辑关系并迁移数据库,生成表. 使用admin插入数据,admin是Django提供的web形式的后台数据管理页面,它是和用户认证 ...
- BigDecimal默认用四舍五入方式
import java.math.BigDecimal; target.setWeight(source.getWeight().setScale(3, BigDecimal.ROUND_HALF_U ...
- SQL Server 查看分区表(partition table)的分区范围(partition range)
https://www.cnblogs.com/chuncn/archive/2009/02/20/1395165.html SQL Server 2005 的分区表(partition table) ...