当前位置: 首页>>代码示例>>C++>>正文


C++ os::Bytes类代码示例

本文整理汇总了C++中yarp::os::Bytes的典型用法代码示例。如果您正苦于以下问题:C++ Bytes类的具体用法?C++ Bytes怎么用?C++ Bytes使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Bytes类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: read

YARP_SSIZE_T BayerCarrier::read(const yarp::os::Bytes& b) {
    // copy across small stuff - the image header
    if (consumed<sizeof(header)) {
        size_t len = b.length();
        if (len>sizeof(header)-consumed) {
            len = sizeof(header)-consumed;
        }
        memcpy(b.get(),((char*)(&header))+consumed,len);
        consumed += len;
        return (YARP_SSIZE_T) len;
    }
    // sane client will want to read image into correct-sized block
    if (b.length()==image_data_len) {
        // life is good!
        processDirect(b);
        consumed += image_data_len;
        return image_data_len;
    }
    // funky client, fall back on image copy
    processBuffered();
    if (consumed<sizeof(header)+out.getRawImageSize()) {
        size_t len = b.length();
        if (len>sizeof(header)+out.getRawImageSize()-consumed) {
            len = sizeof(header)+out.getRawImageSize()-consumed;
        }
        memcpy(b.get(),out.getRawImage()+consumed-sizeof(header),len);
        consumed += len;
        return (YARP_SSIZE_T) len;
    }
    return -1;
}
开发者ID:jgvictores,项目名称:yarp,代码行数:31,代码来源:BayerCarrier.cpp

示例2:

void yarp::os::ModifyingCarrier::getHeader(const yarp::os::Bytes &header) {
    if (header.length()==8) {
        ConstString target = "ohbehave";
        for (int i=0; i<8; i++) {
            header.get()[i] = target[i];
        }
    }
}
开发者ID:CV-IP,项目名称:yarp,代码行数:8,代码来源:ModifyingCarrier.cpp

示例3: apply

void yarp::os::impl::HttpTwoWayStream::write(const yarp::os::Bytes& b) { // throws
    if (chunked) {
        delegate->getOutputStream().write(b);
    } else {
        for (size_t i=0; i<b.length(); i++) {
            apply(b.get()[i]);
        }
    }
}
开发者ID:paulfitz,项目名称:yarp,代码行数:9,代码来源:HttpCarrier.cpp

示例4: write

 virtual void write(const yarp::os::Bytes& b) {
     outputCache.append(b.get(),b.length());
     while (outputCache.find("\n")!=std::string::npos) {
         size_t idx = outputCache.find("\n");
         std::string show;
         show.append(outputCache.c_str(),idx);
         yInfo() << "*** TYPE THIS ON THE OTHER TERMINAL: " << show;
         outputCache = outputCache.substr(idx+1);
         yarp::os::Time::delay(1);
     }
 }
开发者ID:robotology,项目名称:yarp,代码行数:11,代码来源:carrier_human.cpp

示例5: getSpecifierName

bool yarp::os::impl::NameserCarrier::checkHeader(const yarp::os::Bytes& header) {
    if (header.length()==8) {
        String target = getSpecifierName();
        for (int i=0; i<8; i++) {
            if (!(target[i]==header.get()[i])) {
                return false;
            }
        }
        return true;
    }
    return false;
}
开发者ID:paulfitz,项目名称:yarp,代码行数:12,代码来源:NameserCarrier.cpp

示例6: checkHeader

 virtual bool checkHeader(const yarp::os::Bytes& header) {
     if (header.length()!=8) {
         return false;
     }
     const char *target = "HUMANITY";
     for (int i=0; i<8; i++) {
         if (header.get()[i] != target[i]) {
             return false;
         }
     }
     return true;
 }
开发者ID:robotology,项目名称:yarp,代码行数:12,代码来源:carrier_human.cpp

示例7:

yarp::conf::ssize_t WireTwiddlerReader::readMapped(yarp::os::InputStream& is,
                                                   yarp::os::Bytes& b,
                                                   const WireTwiddlerGap& gap) {
    if (gap.load_external) {
        int v = 0;
        if (gap.var_name[0]=='=') {
            Bottle bot;
            bot.fromString(gap.var_name.substr(1,gap.var_name.length()));
            v = bot.get(0).asInt32();
        } else {
            v = prop.find(gap.var_name).asInt32();
        }
        dbg_printf("Read %s: %d\n", gap.var_name.c_str(), v);
        for (size_t i=0; i<b.length(); i++) {
            b.get()[i] = 0;
        }
        NetInt32 *nn = reinterpret_cast<NetInt32 *> (b.get());
        if (b.length()>=4) {
            *nn = v;
        }
        return gap.unit_length;
    }
    if (gap.wire_unit_length==gap.unit_length) {
        return is.read(b);
    }
    for (size_t i=0; i<b.length(); i++) {
        b.get()[i] = 0;
    }
    size_t len = gap.wire_unit_length;
    if (len>b.length()) {
        len = b.length();
    }
    Bytes b2(b.get(),len);
    yarp::conf::ssize_t r = is.readFull(b2);
    if (r==(yarp::conf::ssize_t)len) {
        if (gap.flavor==BOTTLE_TAG_FLOAT64) {
            if (gap.wire_unit_length==4 &&
                gap.unit_length==8) {
                NetFloat32 x = *(reinterpret_cast<NetFloat32 *> (b2.get()));
                NetFloat64 *y = reinterpret_cast<NetFloat64 *> (b2.get());
                *y = x;
            }
        }
        int len2 = gap.wire_unit_length-b.length();
        if (len2>0) {
            dump.allocateOnNeed(len2,len2);
            Bytes b3(dump.get(),len2);
            is.readFull(b3);
        }
        return gap.unit_length;
    }
    return -1;
}
开发者ID:claudiofantacci,项目名称:yarp,代码行数:53,代码来源:WireTwiddler.cpp

示例8: code

void AbstractCarrier::createYarpNumber(int x, const yarp::os::Bytes& header)
{
    if (header.length()!=8) {
        return;
    }
    char *base = header.get();
    base[0] = 'Y';
    base[1] = 'A';
    base[6] = 'R';
    base[7] = 'P';
    yarp::os::Bytes code(base+2, 4);
    NetType::netInt(x, code);
}
开发者ID:jgvictores,项目名称:yarp,代码行数:13,代码来源:AbstractCarrier.cpp

示例9: b2

int AbstractCarrier::interpretYarpNumber(const yarp::os::Bytes& b)
{
    if (b.length()==8) {
        char *base = b.get();
        if (base[0]=='Y' &&
            base[1]=='A' &&
            base[6]=='R' &&
            base[7]=='P') {
            yarp::os::Bytes b2(b.get()+2, 4);
            int x = NetType::netInt(b2);
            return x;
        }
    }
    return -1;
}
开发者ID:jgvictores,项目名称:yarp,代码行数:15,代码来源:AbstractCarrier.cpp

示例10: processDirect

bool BayerCarrier::processDirect(const yarp::os::Bytes& bytes) {
    if (have_result) {
        memcpy(bytes.get(),out.getRawImage(),bytes.length());
        return true;
    }
    //printf("Copyless conversion\n");
    ImageOf<PixelRgb> wrap;
    wrap.setQuantum(out.getQuantum());
    wrap.setExternal(bytes.get(),out.width(),out.height());
    if (half) {
        debayerHalf(in,wrap);
    } else {
        debayerFull(in,wrap);
    }
    return true;
}
开发者ID:jgvictores,项目名称:yarp,代码行数:16,代码来源:BayerCarrier.cpp

示例11: read

 virtual ssize_t read(yarp::os::Bytes& b) {
     if (interrupting) { return -1; }
     while (inputCache.size() < b.length()) {
         yInfo() <<"*** CHECK OTHER TERMINAL FOR SOMETHING TO TYPE:";
         char buf[1000];
         needInterrupt = true;  // should be mutexed, in real implementation
         std::cin.getline(buf,1000);
         needInterrupt = false;
         if (interrupting) { return -1; }
         inputCache += buf;
         inputCache += "\r\n";
         yInfo() << "Thank you";
     }
     memcpy(b.get(),inputCache.c_str(),b.length());
     inputCache = inputCache.substr(b.length());
     return b.length();
 }
开发者ID:robotology,项目名称:yarp,代码行数:17,代码来源:carrier_human.cpp

示例12: addPool

bool BufferedConnectionWriter::addPool(const yarp::os::Bytes& data)
{
    if (pool != nullptr) {
        if (data.length() + poolIndex > pool->length()) {
            pool = nullptr;
        }
    }
    if (pool == nullptr && data.length() < poolLength) {
        bool add = false;
        if (*target_used < target->size()) {
            yarp::os::ManagedBytes*& bytes = (*target)[*target_used];
            if (bytes->length() < poolLength) {
                delete bytes;
                bytes = new yarp::os::ManagedBytes(poolLength);
            }
            pool = bytes;
            if (pool == nullptr) {
                return false;
            }
        } else {
            pool = new yarp::os::ManagedBytes(poolLength);
            if (pool == nullptr) {
                return false;
            }
            add = true;
        }
        (*target_used)++;
        poolCount++;
        poolIndex = 0;
        if (poolLength < 65536) {
            poolLength *= 2;
        }
        pool->setUsed(0);
        if (add)
            target->push_back(pool);
    }
    if (pool != nullptr) {
        memcpy(pool->get() + poolIndex, data.get(), data.length());
        poolIndex += data.length();
        pool->setUsed(poolIndex);
        return true;
    }
    return false;
}
开发者ID:ale-git,项目名称:yarp,代码行数:44,代码来源:BufferedConnectionWriter.cpp

示例13: write

bool ShmemOutputStreamImpl::write(const yarp::os::Bytes& b)
{
    if (!m_bOpen) {
        return false;
    }

    m_pAccessMutex->acquire();

    if (!m_bOpen) {
        return false;
    }

    if (m_pHeader->close) {
        m_pAccessMutex->release();
        close();
        return false;
    }

    if ((int)m_pHeader->size - (int)m_pHeader->avail < (int)b.length()) {
        yarp::conf::ssize_t required = m_pHeader->size + 2 * b.length();
        Resize((int)required);
    }

    if ((int)m_pHeader->head + (int)b.length() <= (int)m_pHeader->size) {
        memcpy(m_pData + m_pHeader->head, b.get(), b.length());
    } else {
        int first_block_size = m_pHeader->size - m_pHeader->head;
        memcpy(m_pData + m_pHeader->head, b.get(), first_block_size);
        memcpy(m_pData, b.get() + first_block_size, b.length() - first_block_size);
    }

    m_pHeader->avail += (int)b.length();
    m_pHeader->head += (int)b.length();
    m_pHeader->head %= m_pHeader->size;

    while (m_pHeader->waiting > 0) {
        --m_pHeader->waiting;
        m_pWaitDataMutex->release();
    }

    m_pAccessMutex->release();

    return true;
}
开发者ID:claudiofantacci,项目名称:yarp,代码行数:44,代码来源:ShmemOutputStream.cpp

示例14: while

yarp::conf::ssize_t ShmemInputStreamImpl::read(yarp::os::Bytes& b)
{
    m_ReadSerializerMutex.lock();

    if (!m_bOpen) {
        m_ReadSerializerMutex.unlock();
        return -1;
    }

    char* data = b.get();
    char* buf;
    size_t len = b.length();
    yarp::conf::ssize_t ret;

    while (!(ret = read(data, (int)len))) {
#ifdef _ACE_USE_SV_SEM
        yarp::os::impl::YARP_timeval tv = ACE_OS::gettimeofday();
        tv.sec(tv.sec() + 1);
#else
        yarp::os::impl::YARP_timeval tv(1);
#endif

        m_pWaitDataMutex->acquire(tv);

        if (!m_pSock->recv(&buf, 1)) {
            //yDebug("STREAM IS BROKEN");
            close();
            m_ReadSerializerMutex.unlock();
            return -1;
        }
    }

    m_ReadSerializerMutex.unlock();

    return ret;
}
开发者ID:robotology,项目名称:yarp,代码行数:36,代码来源:ShmemInputStream.cpp

示例15: yAssert

yarp::conf::ssize_t yarp::os::impl::LocalCarrierStream::read(yarp::os::Bytes& b)
{
    yAssert(false);
    return b.length();
}
开发者ID:claudiofantacci,项目名称:yarp,代码行数:5,代码来源:LocalCarrier.cpp


注:本文中的yarp::os::Bytes类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。