/******************************************************************************* * Boapns.cc Produced by Bidl ******************************************************************************* */ #include <BoapnsC.h> namespace Boapns { Boapns::Boapns(BString name) : BoapClientObject(name){ oapiVersion = 1; } BError Boapns::getVersion(BString& version){ BError err; BError ret; BoapPacketHead txhead; BoapPacketHead rxhead; olock.lock(); if(err = connectService(oname)){ olock.unlock(); return err; } txhead.type = BoapMagic | BoapTypeRpc; txhead.service = oservice; txhead.cmd = 16; otx.pushHead(txhead); if(err = performCall(otx, orx)){ olock.unlock(); return err; } orx.popHead(rxhead); orx.pop(ret); orx.pop(version); olock.unlock(); return ret; } BError Boapns::getEntryList(BList<BoapEntry>& entryList){ BError err; BError ret; BoapPacketHead txhead; BoapPacketHead rxhead; olock.lock(); if(err = connectService(oname)){ olock.unlock(); return err; } txhead.type = BoapMagic | BoapTypeRpc; txhead.service = oservice; txhead.cmd = 17; otx.pushHead(txhead); if(err = performCall(otx, orx)){ olock.unlock(); return err; } orx.popHead(rxhead); orx.pop(ret); { Int32 n0; BoapEntry v0; entryList.clear(); orx.pop(n0); while(n0--){ orx.pop(v0.name); orx.pop(v0.hostName); { Int32 n1; BString v1; v0.addressList.clear(); orx.pop(n1); while(n1--){ orx.pop(v1); v0.addressList.append(v1); } } orx.pop(v0.port); orx.pop(v0.service); entryList.append(v0); } } olock.unlock(); return ret; } BError Boapns::getEntry(BString name, BoapEntry& entry){ BError err; BError ret; BoapPacketHead txhead; BoapPacketHead rxhead; olock.lock(); if(err = connectService(oname)){ olock.unlock(); return err; } txhead.type = BoapMagic | BoapTypeRpc; txhead.service = oservice; txhead.cmd = 18; otx.pushHead(txhead); otx.push(name); if(err = performCall(otx, orx)){ olock.unlock(); return err; } orx.popHead(rxhead); orx.pop(ret); orx.pop(entry.name); orx.pop(entry.hostName); { Int32 n0; BString v0; entry.addressList.clear(); orx.pop(n0); while(n0--){ orx.pop(v0); entry.addressList.append(v0); } } orx.pop(entry.port); orx.pop(entry.service); olock.unlock(); return ret; } BError Boapns::addEntry(BoapEntry entry){ BError err; BError ret; BoapPacketHead txhead; BoapPacketHead rxhead; olock.lock(); if(err = connectService(oname)){ olock.unlock(); return err; } txhead.type = BoapMagic | BoapTypeRpc; txhead.service = oservice; txhead.cmd = 19; otx.pushHead(txhead); otx.push(entry.name); otx.push(entry.hostName); { BIter i0; otx.push(entry.addressList.number()); for(i0 = entry.addressList.begin(); !entry.addressList.isEnd(i0); entry.addressList.next(i0)){ otx.push(entry.addressList[i0]); } } otx.push(entry.port); otx.push(entry.service); if(err = performCall(otx, orx)){ olock.unlock(); return err; } orx.popHead(rxhead); orx.pop(ret); olock.unlock(); return ret; } BError Boapns::delEntry(BString name){ BError err; BError ret; BoapPacketHead txhead; BoapPacketHead rxhead; olock.lock(); if(err = connectService(oname)){ olock.unlock(); return err; } txhead.type = BoapMagic | BoapTypeRpc; txhead.service = oservice; txhead.cmd = 20; otx.pushHead(txhead); otx.push(name); if(err = performCall(otx, orx)){ olock.unlock(); return err; } orx.popHead(rxhead); orx.pop(ret); olock.unlock(); return ret; } BError Boapns::getNewName(BString& name){ BError err; BError ret; BoapPacketHead txhead; BoapPacketHead rxhead; olock.lock(); if(err = connectService(oname)){ olock.unlock(); return err; } txhead.type = BoapMagic | BoapTypeRpc; txhead.service = oservice; txhead.cmd = 21; otx.pushHead(txhead); if(err = performCall(otx, orx)){ olock.unlock(); return err; } orx.popHead(rxhead); orx.pop(ret); orx.pop(name); olock.unlock(); return ret; } }