git-svn-id: svn://db.shs.com.ru/pip@505 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2017-05-29 10:56:07 +00:00
parent 3e086b1388
commit 75ea531673
4 changed files with 22 additions and 7 deletions

View File

@@ -144,9 +144,11 @@ bool PIConnection::configure(PIConfig & conf, const PIString & name_) {
device_names[n] = dev;
setDeviceName(dev, n);
dev->setName(name_ + ".device." + dev_list[i]);
PIConfig::Entry de = ce.getValue("device." + n);
dev->setThreadedReadBufferSize(de.getValue("bufferSize", dev->threadedReadBufferSize()));
PIDiagnostics * diag = diags_.value(dev, 0);
if (diag != 0)
diag->setDisconnectTimeout(ce.getValue("device." + n + ".disconnectTimeout", diag->disconnectTimeout()));
diag->setDisconnectTimeout(de.getValue("disconnectTimeout", diag->disconnectTimeout()));
}
int added(0), padded(-1), tries(0);
bool pdebug = debug();
@@ -212,6 +214,7 @@ bool PIConnection::configure(PIConfig & conf, const PIString & name_) {
PIDiagnostics * diag = diags_.value(pe, 0);
if (diag != 0)
diag->setDisconnectTimeout(e->getValue("disconnectTimeout", diag->disconnectTimeout()));
pe->setBufferSize(e->getValue("bufferSize", pe->bufferSize()));
pe->setPayloadSize(e->getValue("payloadSize", pe->payloadSize()));
pe->setPacketSize(e->getValue("packetSize", pe->packetSize()));
pe->setTimeout(e->getValue("timeout", pe->timeout()));
@@ -254,6 +257,7 @@ PIString PIConnection::makeConfig() const {
if (dnl.isEmpty()) dnl << PIString::fromNumber(++dn);
piForeachC (PIString & dname, dnl) {
ret << "device." << dname << " = " << d->constructFullPath() << " #s\n";
ret << "device." << dname << ".bufferSize = " << d->threadedReadBufferSize() << " #n\n";
PIDiagnostics * diag = diags_.value(const_cast<PIIODevice * >(d), 0);
if (diag != 0)
ret << "device." << dname << ".disconnectTimeout = " << diag->disconnectTimeout() << " #f\n";
@@ -266,6 +270,7 @@ PIString PIConnection::makeConfig() const {
for (int i = 0; i < f.second->devices.size_s(); ++i)
ret << prefix << ".device." << i << " = " << device_names.key(f.second->devices[i]) << " #s\n";
PIDiagnostics * diag = diags_.value(f.second->extractor, 0);
ret << prefix << ".bufferSize = " << f.second->extractor->bufferSize() << " #n\n";
if (diag != 0)
ret << prefix << ".disconnectTimeout = " << diag->disconnectTimeout() << " #f\n";
ret << prefix << ".splitMode = ";
@@ -422,7 +427,8 @@ PIPacketExtractor * PIConnection::addFilter(const PIString & name_, const PIStri
PIString fname_ = name_.trimmed();
Extractor * e = extractors.value(fname_);
if (full_path.isEmpty()) return (e == 0 ? 0 : e->extractor);
PIIODevice * dev = deviceByFullPath(fp);
PIIODevice * dev = deviceByName(fp);
if (!dev) dev = deviceByFullPath(fp);
PIPacketExtractor * pe(0);
if (extractors.value(full_path) != 0) pe = extractors.value(full_path)->extractor;
if (pe != 0) dev = pe;
@@ -591,7 +597,9 @@ PIVector<PIIODevice * > PIConnection::filterBoundedDevices(const PIString & name
bool PIConnection::addChannel(const PIString & name0, const PIString & name1) {
//piCout << "addChannel" << name0 << name1;
if (name0.isEmpty() || name1.isEmpty()) return false;
PIIODevice * dev0 = deviceByFullPath(name0), * dev1 = deviceByFullPath(name1);
PIIODevice * dev0 = deviceByName(name0), * dev1 = deviceByName(name1);
if (!dev0) dev0 = deviceByFullPath(name0);
if (!dev1) dev1 = deviceByFullPath(name1);
PIPacketExtractor * pe0(0), * pe1(0);
if (extractors.value(name0) != 0) pe0 = extractors.value(name0)->extractor;
if (extractors.value(name1) != 0) pe1 = extractors.value(name1)->extractor;

View File

@@ -94,7 +94,6 @@ void PIPacketExtractor::construct() {
ret_func_header = ret_func_footer = 0;
setPayloadSize(0);
setTimeout(100);
setThreadedReadBufferSize(65536);
setBufferSize(65536);
setDevice(0);
setPacketSize(0);
@@ -120,6 +119,14 @@ void PIPacketExtractor::setDevice(PIIODevice * device_) {
}
void PIPacketExtractor::setBufferSize(int new_size) {
buffer_size = new_size;
buffer.resize(buffer_size);
memset(buffer.data(), 0, buffer.size());
setThreadedReadBufferSize(new_size);
}
void PIPacketExtractor::setPayloadSize(int size) {
setProperty("payloadSize", size);
dataSize = size;

View File

@@ -61,7 +61,7 @@ public:
int bufferSize() const {return buffer_size;}
//! Set buffer size to "new_size" bytes, should be at least greater than whole packet size
void setBufferSize(int new_size) {buffer_size = new_size; buffer.resize(buffer_size); memset(buffer.data(), 0, buffer.size());}
void setBufferSize(int new_size);
void setHeaderCheckSlot(PacketExtractorCheckFunc f) {ret_func_header = f;}
void setFooterCheckSlot(PacketExtractorCheckFunc f) {ret_func_footer = f;}

View File

@@ -132,11 +132,11 @@ void makeClassStream(PIFile & f, const PICodeParser::Entity * e) {
f << "\nPIByteArray & operator <<(PIByteArray & s, const " << e->name << " & v) {\n";
f << "\ts";
piForeachC (PIString & m, ml)
f << " << " << m << "\n\t";
f << " << v." << m << "\n\t";
f << ";\n}\nPIByteArray & operator >>(PIByteArray & s, " << e->name << " & v) {\n";
f << "\ts";
piForeachC (PIString & m, ml)
f << " >> " << m << "\n\t";
f << " >> v." << m << "\n\t";
f << ";\n}\n";
}