myrecv function gSoap
myrecv function gSoap
我正在尝试编写一台GSOAP服务器,该服务器需要保存传入的消息。我想将其保存在缓冲区中。这是GSOAP文档在客户端进行保存消息的方式...
//from gSoap Documentation
//SOURCE: https://www.genivia.com/doc/soapdoc2.html#tth_sEc19.7
int mysend(struct soap *soap, const char *s, size_t n)
{
struct buffer *h = (struct buffer*)soap->user; // get buffer through handle
int m = h->max, k = h->len + n;
// need to increase space?
if (m == 0)
m = 1024;
else
while (k >= m)
m *= 2;
if (m != h->max)
{
char *buf = malloc(m);
memcpy(buf, h->buf, h->len);
h->max = m;
if(h->buf)
free(h->buf);
h->buf = buf;
}
memcpy(h->buf + h->len, s, n);
h->len += n;
return SOAP_OK;
}
这可以进行一些修改,但是如果我将同样的想法带到服务器端,将其存储到缓冲区并使用此返回语句结束...
size_t myrecv(struct soap *soap, char *s, size_t n){
//do similar to above example...
...
return default_frecv(soap,s,n);
}
它仅存储从服务器回到客户端的消息。我需要将消息从客户端保存到服务器。我认为RECV会给我传入的信息,但事实并非如此。有任何想法吗?任何帮助,建议或想法都将受到赞赏!预先感谢!
MySend示例的来源:https://www.genivia.com/doc/soapdoc2.html#tth_sec19.7
我需要将消息从客户端保存到服务器。我 思想recv会给我传入的信息,但这不是 案例。
嗯。文档清楚地说,frecv()
是接收所有消息的回调,无论是客户端实现还是服务器端实现。因此,定义您自己的frecv()
回调应该这样。如果卡住了,请查看" gsoap/plugin/logging.c消息记录器",该消息实现此回调以捕获接收到的消息并将其发送到文件/管道。
我能够钩到freecv()中,并在调用默认的FRECV()函数后进行自己的其他处理。但是,一个新的目的要求我在默认的FRECV()之前解析缓冲区,此时尚不存在。一旦调用了默认的FRECV(),就存在缓冲区,但是我想拦截的缓冲区上采取的动作(即Soap_serve())已经发生,因此我在派生的上下文中是一个请求。/p>
我的目的是解析WSDL名称的缓冲区,以将唯一的名称空间分配给SOAP_SERVE(),但它不起作用。
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- Confusion: decltype vs std::function
- 为什么 std::function 可以作为 std::not2 的参数?
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- 使用GSoap实现ONVIF
- 传递给std::function template的template参数究竟代表什么
- 将带有unique_ptr的可变 lambda 传递给 const&std::function
- 使用 mod_gsoap 部署服务时,如何在 Gsoap 中更改 soap 上下文的模式?
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- "no matching function for call to 'Vector::Vector'"错误
- 如何在向量中删除 std::function<void()>?
- gSoap在从.wsdl创建.h期间出现错误
- 不断"Attempting to reference a deleted function"
- 将函数包装器转换为 std::function
- 类型擦除的std::function与虚拟函数调用的开销
- C++ std::function 对于类 exept 的所有实例都是空的(只有 Visual2019 编译器问题)
- 如果模板没有可变参数,则 Lambda 被推导出为 std::function
- myrecv function gSoap