SchemaStatisticImpl::SchemaStatisticImpl(Buffer& buffer) { FieldTable map; map.decode(buffer); name = map.getAsString("name"); typecode = (Typecode) map.getAsInt("type"); unit = map.getAsString("unit"); description = map.getAsString("desc"); }
SchemaPropertyImpl::SchemaPropertyImpl(Buffer& buffer) { FieldTable map; map.decode(buffer); name = map.getAsString("name"); typecode = (Typecode) map.getAsInt("type"); access = (Access) map.getAsInt("access"); index = map.getAsInt("index") != 0; optional = map.getAsInt("optional") != 0; unit = map.getAsString("unit"); description = map.getAsString("desc"); }
SchemaMethodImpl::SchemaMethodImpl(Buffer& buffer) { FieldTable map; int argCount; map.decode(buffer); name = map.getAsString("name"); argCount = map.getAsInt("argCount"); description = map.getAsString("desc"); for (int idx = 0; idx < argCount; idx++) { SchemaArgument* arg = SchemaArgumentImpl::factory(buffer); addArgument(arg); } }
SchemaArgumentImpl::SchemaArgumentImpl(Buffer& buffer) { FieldTable map; map.decode(buffer); name = map.getAsString("name"); typecode = (Typecode) map.getAsInt("type"); unit = map.getAsString("unit"); description = map.getAsString("desc"); dir = DIR_IN; string dstr(map.getAsString("dir")); if (dstr == "O") dir = DIR_OUT; else if (dstr == "IO") dir = DIR_IN_OUT; }
void ConnectionHandler::Handler::start(const FieldTable& serverProperties, const framing::Array& supportedMechanisms, const framing::Array& /*locales*/) { string requestedMechanism = connection.getAuthMechanism(); std::string username = connection.getUsername(); std::string password = connection.getPassword(); std::string host = connection.getHost(); std::string service("qpidd"); if ( connection.getBroker().isAuthenticating() ) { sasl = SaslFactory::getInstance().create( username, password, service, host, 0, // TODO -- mgoulish Fri Sep 24 2010 256, false ); // disallow interaction } std::string supportedMechanismsList; Array::const_iterator i; /* If no specific mechanism has been requested, just make a list of all of them, and assert that the one the caller requested is there. ( If *any* are supported! ) */ if ( requestedMechanism.empty() ) { for ( i = supportedMechanisms.begin(); i != supportedMechanisms.end(); ++i) { if (i != supportedMechanisms.begin()) supportedMechanismsList += SPACE; supportedMechanismsList += (*i)->get<std::string>(); } } else { /* The caller has requested a mechanism. If it's available, make sure it ends up at the head of the list. */ for ( i = supportedMechanisms.begin(); i != supportedMechanisms.end(); ++i) { string currentMechanism = (*i)->get<std::string>(); if ( requestedMechanism == currentMechanism ) { supportedMechanismsList = currentMechanism + SPACE + supportedMechanismsList; } else { if (i != supportedMechanisms.begin()) supportedMechanismsList += SPACE; supportedMechanismsList += currentMechanism; } } } if (serverProperties.isSet(QPID_FED_TAG)) { connection.setFederationPeerTag(serverProperties.getAsString(QPID_FED_TAG)); } FieldTable ft = connection.getBroker().getLinkClientProperties(); ft.setInt(QPID_FED_LINK,1); ft.setString(QPID_FED_TAG, connection.getBroker().getFederationTag()); string response; if (sasl.get()) { const qpid::sys::SecuritySettings& ss = connection.getExternalSecuritySettings(); if (sasl->start ( requestedMechanism.empty() ? supportedMechanismsList : requestedMechanism, response, & ss )) { proxy.startOk ( ft, sasl->getMechanism(), response, en_US ); } else { //response was null ConnectionStartOkBody body; body.setClientProperties(ft); body.setMechanism(sasl->getMechanism()); //Don't set response, as none was given body.setLocale(en_US); proxy.send(body); } } else { response = ((char)0) + username + ((char)0) + password; proxy.startOk ( ft, requestedMechanism, response, en_US ); } }