示例#1
0
void Container::load(QXmlStreamReader &stream)
{
	Option *option;
	List::Container uninitialized(m_items);

	while (readNextStartElement(stream))
		if (option = uninitialized.value(stream.name()))
		{
			option->load(stream);
			uninitialized.remove(&option->id());
		}

	for (List::Container::const_iterator i = uninitialized.constBegin(), end = uninitialized.constEnd(); i != end; ++i)
		(*i)->loadDefault();
}
  void Socket::setsockopt(const Option& option) throw (Exception)
  {
    int error;

    if(!isOpened())
    {
      throw Exception(SETSOCKOPT, NOT_OPENED, NOT_OPENED_CODE);
    }

    error = ::setsockopt(descriptor, option.level(), option.id(), option.pointer(), option.size());

    if(error == SETSOCKOPT_ERROR)
    {
      throw LibCException(SETSOCKOPT);
    }
  }
  int Socket::getsockopt(Option& option) throw (Exception)
  {
    int error;

    if(!isOpened())
    {
      throw Exception(GETSOCKOPT, NOT_OPENED, NOT_OPENED_CODE);
    }

    socklen_t optSize = option.size();

    error = ::getsockopt(descriptor, option.level(), option.id(), option.pointer(), &optSize);

    if(error == GETSOCKOPT_ERROR)
    {
      throw LibCException(GETSOCKOPT);
    }

    return optSize;
  }