char* InSDDSPort::attach(const BULKIO::SDDSStreamDefinition& stream, const char* userid) 
    throw (BULKIO::dataSDDS::AttachError, BULKIO::dataSDDS::StreamInputError)
  {

    TRACE_ENTER(logger, "InSDDSPort::attach" );

    LOG_DEBUG( logger, "SDDS PORT: ATTACH REQUEST, STREAM/USER: "******"/" << userid );

    std::string attachId("");

    if ( attach_detach_callback ) {
      try {
	LOG_DEBUG( logger, "SDDS PORT: CALLING ATTACH CALLBACK, STREAM/USER: "******"/" << userid );
	attachId = attach_detach_callback->attach(stream, userid);
      }
      catch(...) {
	LOG_ERROR( logger, "SDDS PORT: ATTACH CALLBACK EXCEPTION, STREAM/USER: "******"/" << userid );
	throw BULKIO::dataSDDS::AttachError("Callback Failed.");
      }
    }
    if ( attachId.size() == 0 ) {
      attachId = _uuid_gen();
    }

    attachedStreamMap.insert(std::make_pair(attachId, new BULKIO::SDDSStreamDefinition(stream)));
    attachedUsers.insert(std::make_pair(attachId, std::string(userid)));

    LOG_DEBUG( logger, "SDDS PORT, ATTACH COMPLETED, ID:" << attachId << 
	       " STREAM/USER" << stream.id <<  "/" << userid );

    TRACE_EXIT(logger, "InSDDSPort::attach" );
    return CORBA::string_dup(attachId.c_str());
  }
예제 #2
0
YacasKernel::Session::Session(const std::string& key):
    _auth(key),
    _uuid(_uuid_gen())
{
}