-// ANNA - Anna is Not Nothingness Anymore
-//
-// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
-//
-// http://redmine.teslayout.com/projects/anna-suite
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of the copyright holder nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: eduardo.ramos.testillano@gmail.com
-// cisco.tierra@gmail.com
+// ANNA - Anna is Not Nothingness Anymore //
+// //
+// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
+// //
+// See project site at http://redmine.teslayout.com/projects/anna-suite //
+// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
#include <time.h>
// Se invoca desde el ldap::Engine
//---------------------------------------------------------------------------------
void Session::bind()
-throw(RuntimeException) {
+noexcept(false) {
if(a_state != State::Closed)
return;
LDAP* handle = NULL;
int aux;
ResultCode resultCode;
- Response* response(NULL);
try {
resultCode = ldap_initialize(&handle, a_url.c_str());
}
const Response* Session::send(const Request* request)
-throw(RuntimeException) {
+noexcept(false) {
if(a_state == State::Closed) {
string msg(asString());
msg += " | Session::bind must be called";
}
void Session::unbind()
-throw(RuntimeException) {
+noexcept(false) {
if(a_state == State::Closed)
return;
// a la ldap::Session
//------------------------------------------------------------------------------------------
void Session::apply()
-throw(RuntimeException) {
+noexcept(false) {
LOGMETHOD(TraceMethod traceMethod("ldap::Session", "apply", ANNA_FILE_LOCATION));
LDAP* handle = (LDAP*) a_ldap;
LDAPMessage* hmessage(NULL);
* invocado por el comm::Communicator::detach.
*/
void Session::finalize()
-throw() {
+{
LDAP* handle = (LDAP*) a_ldap;
a_state = State::Closed;
}
void Session::receiveBind(const IdMessage idMessage, Session::HandleMessage _hmessage)
-throw(RuntimeException) {
+noexcept(false) {
LDAP* handle = (LDAP*) a_ldap;
LDAPMessage* hmessage = (LDAPMessage*) _hmessage;
// (1) Necesario para detectar el final de los atributos
//------------------------------------------------------------------------------------------------
void Session::receiveEntry(const IdMessage idMessage, Session::HandleMessage _hmessage)
-throw(RuntimeException) {
+noexcept(false) {
LDAP* handle = (LDAP*) a_ldap;
LDAPMessage* hmessage = (LDAPMessage*) _hmessage;
BerElement *ber(NULL);
}
void Session::receiveReference(const IdMessage idMessage, Session::HandleMessage _hmessage)
-throw(RuntimeException) {
+noexcept(false) {
LDAP* handle = (LDAP*) a_ldap;
LDAPMessage* hmessage = (LDAPMessage*) _hmessage;
char **values(NULL);
}
void Session::receiveResult(const IdMessage idMessage, Session::HandleMessage _hmessage)
-throw(RuntimeException) {
+noexcept(false) {
LDAP* handle = (LDAP*) a_ldap;
LDAPMessage* hmessage = (LDAPMessage*) _hmessage;
Response* response = response_find(idMessage);
int error = LDAP_SUCCESS;
char **values(NULL);
ResultCode resultCode;
- bool isOk = true;
response->cancelTimer();
const int ldap_result = ldap_parse_result(handle, hmessage, &error, NULL, NULL, &values, NULL, 0);
resultCode.setValue(ldap_result, error);
// Se invoca desde ldap::timer::Prototype::expire
//-------------------------------------------------------------------------
void Session::expireResponse(ldap::Response* response)
-throw() {
+{
LDAP* handle = (LDAP*) a_ldap;
ResultCode resultCode;
/*
}
void Session::response_add(Response* response)
-throw() {
+{
a_responses.add(response);
response->setSession(this);
}
void Session::response_erase(Response* response)
-throw() {
+{
a_responses.erase(response);
Response::release(response);
}
Response* Session::response_find(const IdMessage idMessage)
-throw(RuntimeException) {
+noexcept(false) {
ldap::Response* result = a_responses.find(idMessage);
if(result == NULL) {
}
std::string Session::asString() const
-throw() {
+{
string result("ldap::Session { ");
result += comm::Handler::asString();
result += " | State: ";
}
xml::Node* Session::asXML(xml::Node* parent) const
-throw() {
+{
parent = comm::Handler::asXML(parent);
xml::Node* result = parent->createChild("ldap.Session");
result->createAttribute("State", asText(a_state));
result->createChild("NetworkTimeout")->createAttribute("Value", getNetworkTimeout());
xml::Node* requests = result->createChild("ldap.Requests");
- const Response* response;
const Request* request;
for(const_response_iterator ii = response_begin(), maxii = response_end(); ii != maxii; ii ++) {
}
int Session::getDangerousFileDescriptor() const
-throw(RuntimeException) {
+noexcept(false) {
ResultCode resultCode;
int result = -1;
resultCode = ldap_get_option((LDAP*) a_ldap, LDAP_OPT_DESC, &result);
}
const char* Session::asText(const State::_v state)
-throw() {
+{
static const char* states [] = { "Closed", "WaitingBind", "Bound" };
return states [state];
}
IdMessage Session::SortById::value(const Response* response)
-throw() {
+{
return response->getIdMessage();
}