SOAP_FMAC5 int SOAP_FMAC6 soap_serve(struct soap *soap)
{
do
{
unsigned int k = soap->max_keep_alive;
if (soap->max_keep_alive > && !--k)
soap->keep_alive = ;
if (soap_begin_serve(soap))
{
if (soap->error >= SOAP_STOP)
continue;
return soap->error;
}
/*soap_begin_serve()函数在buf中解析到<body>位置,soap_server_request继续解析下一个元素,这个元素就是一种request。
soap_serve_request()函数就是我们开放新功能的地方*/ if (soap_serve_request(soap) || (soap->fserveloop && soap->fserveloop(soap)))
{
return soap_send_fault(soap);
}
} while (soap->keep_alive); return SOAP_OK;
} soap_begin_serve(struct soap *soap)
{
soap_begin(soap); if (soap_begin_recv(soap) //阻塞在这里 收到消息后 调用http_parse解析http头部
|| soap_envelope_begin_in(soap) /*从buf中找寻envelope开始标签(begin),in代表是从buf中解析结构 out代表把结构填充到buf中去。可以在这里做分流,
有<envelope>认为是onvif部分继续交gsoap处理,没有的交http服务器处理。*/
|| soap_recv_header(soap) //从buf中分离出header域。
|| soap_body_begin_in(soap)) //找寻body的开始标签
{
if (soap->error < SOAP_STOP)
{
if(soap->error!=SOAP_GET_METHOD && soap->error!=)
{
return soap_send_fault(soap); //此句是原句
}
else
{
return soap->error;
}
}
return soap_closesock(soap);
}
return SOAP_OK;
}

gsoap框架下的onvif程序流程分析的更多相关文章

  1. 01 . Go框架之Beego简介部署及程序流程分析

    Beego简介 beego是一个使用Go语言来开发WEB引用的GoWeb框架,该框架起始于2012年,由一位中国的程序员编写并进行公开,其目的就是为大家提供一个高效率的web应用开发框架.该框架采用模 ...

  2. uboot学习之uboot-spl的程序流程分析

    uboot-spl的程序流程主要包含下面的几个函数: _start->reset->save_boot_params->cpu_init_crit->lowlevel_init ...

  3. 3、Java基础语法(下):程序流程控制

    程序流程控制 从键盘获取不同类型的变量: 使用Scanner类,具体实现步骤: 1.导包:import java.util.Scanner; 2.Scanner的实例化:Scanner scan = ...

  4. stm32 usb数据接收与数据发送程序流程分析

    http://blog.csdn.net/u011318735/article/details/17424349 既然学习了USB,那就必须的搞懂USB设备与USB主机数据是怎么通讯的.这里主要讲设备 ...

  5. WordPress程序流程分析

    index.php 统一入口文件 包含wp-blog-heaer.php 包含wp-load.php 包含wp-config.php 数据库.语言包配置等 包含wp-setting.php 对各种运行 ...

  6. HTC VIVE SDK 中的例子 hellovr_opengl 程序流程分析

    最近Vive的VR头盔设备很火,恰逢项目需求,所以对 SDK 中的例子 hellovr_opengl 做了比较细致的代码分析,先将流程图绘制如下,便于大家理解. 在ViVe头盔中实现立体效果的技术核心 ...

  7. Taro框架下qq小程序开发体验

    qq小程序发布了,作为第一批体验者 .还是发现了和微信小程序很多不同的地方. 最新的小程序我这里都是用Taro开发的,体验较为不错.数据管理用的是redux.JS用的ES6加async等. 微信小程序 ...

  8. [Abp 源码分析]一、Abp 框架启动流程分析

    Abp 不一定仅用于 Asp.Net Core 项目,他也可以在 Console 与 WinFrom 项目当中进行使用,所以关于启动流程可以分为两种,一种是 Asp.Net Core 项目的启动流程, ...

  9. Android之 MTP框架和流程分析

    概要 本文的目的是介绍Android系统中MTP的一些相关知识.主要的内容包括:第1部分 MTP简介            对Mtp协议进行简单的介绍.第2部分 MTP框架            介绍 ...

随机推荐

  1. iOS开发 仿淘宝,京东商品详情3D动画

    - (void)show { [[UIApplication sharedApplication].windows[0] addSubview:self.projectView]; CGRect fr ...

  2. AsyncTask实现异步线程通信

    AsyncTask是Android1.5开始提供的一个封装了Thread与Handler可以实现异步线程的简单方式,不需要再自己实现子线程,然后在主线程处接受数据. 因为AsyncTask是用线程池, ...

  3. dede标签调用

    关键描述调用标签: <meta name="keywords" content="{dede:field name='keywords'/}">&l ...

  4. ios开发中的toll-free bridged

    所谓的Toll-free bridging是说您可以在某个框架的方法或函数 同时使用Core Foundatio和Foundation 框架中的某些类型. 很多数据类型支持这一特性,其中包括群体和字符 ...

  5. bzoj题解汇总(1001-1016)

    bzoj1001: 平面图网络流. 注意只有一行或者一列的情况. bzoj1002: 待定系数法求解递归式.或者用MatrixTree+行列式直接推导. 然后来个高精度. bzoj1003: dp+最 ...

  6. wordpress内存不足问题“Fatal error:out of memoryin etc...”

    2016年3月22日wordpress用户名及密码登录,出现: “ Fatal error: Out of memory (allocated 19136512) (tried to allocate ...

  7. Qt之QSizePolicy

    简述 QSizePolicy类是一个描述布局水平和垂直方向调整策略的属性. 大小策略会影响布局引擎处理部件的方式,部件加入布局以后,会返回一个QSizePolicy,描述了其水平和垂直方向的大小策略. ...

  8. java下载网络图片

    import java.io.DataInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IO ...

  9. MASM6.15汇编程序例子

    /***************通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上*****************/ DATAS SEGMENT ;此处输入数据段代 ...

  10. 并查集 POJ 1988

    #include <cstdio> #define N 30010 int pa[N]; //parent int siz_tree[N]; //size of tree int d[N] ...