tcpcarrier.h
来自「一个语言识别引擎」· C头文件 代码 · 共 78 行
H
78 行
// -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
/*
* Copyright (C) 2006 Paul Fitzpatrick
* CopyPolicy: Released under the terms of the GNU GPL v2.0.
*
*/
#ifndef _YARP2_TCPCARRIER_
#define _YARP2_TCPCARRIER_
#include <yarp/AbstractCarrier.h>
#include <ace/OS_NS_stdio.h>
namespace yarp {
class TcpCarrier;
}
/**
* Communicating between two ports via TCP.
*/
class yarp::TcpCarrier : public AbstractCarrier {
public:
TcpCarrier() {
requireAckFlag = true;
}
virtual Carrier *create() {
return new TcpCarrier();
}
virtual String getName() {
return "tcp";
}
int getSpecifierCode() {
return 3;
}
virtual bool checkHeader(const Bytes& header) {
return getSpecifier(header)%16 == getSpecifierCode();
}
virtual void getHeader(const Bytes& header) {
createStandardHeader(getSpecifierCode()+(requireAckFlag?128:0), header);
}
virtual void setParameters(const Bytes& header) {
int specifier = getSpecifier(header);
requireAckFlag = (specifier&128)!=0;
}
virtual bool requireAck() {
return requireAckFlag;
}
virtual bool isConnectionless() {
return false;
}
virtual void respondToHeader(Protocol& proto) {
int cport = proto.getStreams().getLocalAddress().getPort();
proto.writeYarpInt(cport);
}
virtual void expectReplyToHeader(Protocol& proto) {
proto.readYarpInt(); // ignore result
}
private:
bool requireAckFlag;
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?