⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printeri.cpp

📁 ICE-3.2 一个开源的中间件
💻 CPP
字号:
// **********************************************************************//// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.//// This copy of Ice is licensed to you under the terms described in the// ICE_LICENSE file included in this distribution.//// **********************************************************************#include <Ice/Ice.h>#include <PrinterI.h>using namespace std;static ostream&operator<<(ostream& out, Demo::Color c){    switch(c)    {    case Demo::red:        out << "red";        break;    case Demo::green:        out << "green";        break;    case Demo::blue:        out << "blue";        break;    }    return out;}boolPrinterI::ice_invoke(const vector<Ice::Byte>& inParams, vector<Ice::Byte>& outParams, const Ice::Current& current){    Ice::CommunicatorPtr communicator = current.adapter->getCommunicator();    Ice::InputStreamPtr in;    if(inParams.size() > 0)    {        in = Ice::createInputStream(communicator, inParams);    }    if(current.operation == "printString")    {        string message = in->readString();        cout << "Printing string `" << message << "'" << endl;        return true;    }    else if(current.operation == "printStringSequence")    {        Demo::StringSeq seq = in->readStringSeq();        cout << "Printing string sequence {";        for(Demo::StringSeq::iterator p = seq.begin(); p != seq.end(); ++p)        {            if(p != seq.begin())            {                cout << ", ";            }            cout << "'" << *p << "'";        }        cout << "}" << endl;        return true;    }    else if(current.operation == "printDictionary")    {        Demo::StringDict dict;        Demo::ice_readStringDict(in, dict);        cout << "Printing dictionary {";        for(Demo::StringDict::iterator p = dict.begin(); p != dict.end(); ++p)        {            if(p != dict.begin())            {                cout << ", ";            }            cout << p->first << "=" << p->second;        }        cout << "}" << endl;        return true;    }    else if(current.operation == "printEnum")    {        Demo::Color c;        Demo::ice_readColor(in, c);        cout << "Printing enum " << c << endl;        return true;    }    else if(current.operation == "printStruct")    {        Demo::Structure s;        Demo::ice_readStructure(in, s);        cout << "Printing struct: name=" << s.name << ", value=" << s.value << endl;        return true;    }    else if(current.operation == "printStructSequence")    {        Demo::StructureSeq seq;        Demo::ice_readStructureSeq(in, seq);        cout << "Printing struct sequence: {";        for(Demo::StructureSeq::iterator p = seq.begin(); p != seq.end(); ++p)        {            if(p != seq.begin())            {                cout << ", ";            }            cout << p->name << "=" << p->value;        }        cout << "}" << endl;        return true;    }    else if(current.operation == "printClass")    {        Demo::CPtr c;        Demo::ice_readC(in, c);        in->readPendingObjects();        cout << "Printing class: s.name=" << c->s.name << ", s.value=" << c->s.value << endl;        return true;    }    else if(current.operation == "getValues")    {        Demo::CPtr c = new Demo::C;        c->s.name = "green";        c->s.value = Demo::green;        Ice::OutputStreamPtr out = Ice::createOutputStream(communicator);        Demo::ice_writeC(out, c);        out->writeString("hello");        out->writePendingObjects();        out->finished(outParams);        return true;    }    else if(current.operation == "throwPrintFailure")    {        cout << "Throwing PrintFailure" << endl;        Demo::PrintFailure ex;        ex.reason = "paper tray empty";        Ice::OutputStreamPtr out = Ice::createOutputStream(communicator);        out->writeException(ex);        out->finished(outParams);        return false;    }    else if(current.operation == "shutdown")    {        current.adapter->getCommunicator()->shutdown();        return true;    }    else    {        Ice::OperationNotExistException ex(__FILE__, __LINE__);        ex.id = current.id;        ex.facet = current.facet;        ex.operation = current.operation;        throw ex;    }    return false;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -