Exemplo n.º 1
0
RingoFetchContext * RingoFetchContext::findFresh (int context_id,
                                                  const Array<char> &query_id)
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoFetchContext>, _instances);

   int i;

   for (i = 0; i < _instances.size(); i++)
   {
      RingoFetchContext *instance = _instances[i];

      if (!instance->fresh)
         continue;

      if (instance->context_id != context_id)
         continue;

      if (instance->_query_id.memcmp(query_id) != 0)
         continue;

      return instance;
   }

   return 0;
}
Exemplo n.º 2
0
void RingoFetchContext::removeByContextID (int id)
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoFetchContext>, _instances);
   int i;

   for (i = _instances.size() - 1; i >= 0; i--)
      if (_instances[i]->context_id == id)
         _instances.remove(i);
}
Exemplo n.º 3
0
RingoFetchContext & RingoFetchContext::get (int id)
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoFetchContext>, _instances);

   for (int i = 0; i < _instances.size(); i++)
      if (_instances[i]->id == id)
         return *_instances[i];

   throw Error("context #%d not found", id);
}
Exemplo n.º 4
0
BingoContext * BingoContext::existing (int id)
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<BingoContext>, _instances);

   for (int i = 0; i < _instances.size(); i++)
      if (_instances[i]->id == id)
         return _instances[i];

   throw Error("context #%d not found", id);
}
Exemplo n.º 5
0
BingoContext * BingoContext::_get (int id)
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<BingoContext>, _instances);

   for (int i = 0; i < _instances.size(); i++)
      if (_instances[i]->id == id)
         return _instances[i];

   return 0;
}
Exemplo n.º 6
0
RingoContext * RingoContext::get (int id)
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoContext>, _instances);

   for (int i = 0; i < _instances.size(); i++)
      if (_instances[i]->_context.id == id)
         return _instances[i];

   BingoContext *bingo_context = BingoContext::get(id);

   return &_instances.add(new RingoContext(*bingo_context));
}
Exemplo n.º 7
0
int RingoContext::next (int k)
{
   int i, next_id = end();

   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoContext>, _instances);

   for (i = 0; i < _instances.size(); i++)
      if (_instances[i]->_context.id > k && _instances[i]->_context.id < next_id)
         next_id = _instances[i]->_context.id;

   return next_id;
}
Exemplo n.º 8
0
void RingoFetchContext::remove (int id)
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoFetchContext>, _instances);
   int i;

   for (i = 0; i < _instances.size(); i++)
      if (_instances[i]->id == id)
         break;

   if (i == _instances.size())
      throw Error("remove(): context #%d not found", id);

   _instances.remove(i);
}
Exemplo n.º 9
0
int RingoContext::begin ()
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoContext>, _instances);

   if (_instances.size() < 1)
      return 0;

   int i, min_id = _instances[0]->_context.id;

   for (i = 1; i < _instances.size(); i++)
      if (_instances[i]->_context.id < min_id)
         min_id = _instances[i]->_context.id;

   return min_id;
}
Exemplo n.º 10
0
int RingoContext::end ()
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoContext>, _instances);

   if (_instances.size() < 1)
      return 0;

   int i, max_id = _instances[0]->_context.id;

   for (i = 1; i < _instances.size(); i++)
      if (_instances[i]->_context.id > max_id)
         max_id = _instances[i]->_context.id;

   return max_id + 1;
}
Exemplo n.º 11
0
RingoFetchContext & RingoFetchContext::create (RingoOracleContext &context,
                                               const Array<char> &query_id)
{
   OsLocker locker(_instances_lock);
   TL_GET(PtrArray<RingoFetchContext>, _instances);

   int id = 1;

   for (int i = 0; i < _instances.size(); i++)
      if (_instances[i]->id >= id)
         id = _instances[i]->id + 1;

   AutoPtr<RingoFetchContext> new_context(new RingoFetchContext(id, context, query_id));
   const BingoOracleContext &boc = context.context();

   new_context->id = id;

   _instances.add(new_context.release());
   return *_instances.top();
}