1
0
mirror of https://github.com/stefanocasazza/ULib.git synced 2025-09-28 19:05:55 +08:00
ULib/examples/IR/ir_session.h
stefanocasazza fc24169677 sync
2016-09-15 18:36:41 +02:00

114 lines
2.2 KiB
C++

// ir_session.h
#ifndef IR_SESSION_H
#define IR_SESSION_H 1
#include <ulib/debug/crono.h>
#include <ulib/utility/data_session.h>
#include "cquery.h"
class IRDataSession : public UDataSession {
public:
uint32_t sz, for_page;
UVector<WeightWord*> vec;
UString query, timerun, buffer_data;
// COSTRUTTORE
IRDataSession()
{
U_TRACE_REGISTER_OBJECT(5, IRDataSession, "")
sz = for_page = 0;
}
~IRDataSession()
{
U_TRACE_UNREGISTER_OBJECT(5, IRDataSession)
}
// SERVICES
uint32_t size() { return sz; }
// define method VIRTUAL of class UDataStorage
virtual void clear()
{
U_TRACE(5, "IRDataSession::clear()")
sz = for_page = 0;
vec.clear();
query.clear();
timerun.clear();
buffer_data.clear();
}
virtual char* toBuffer()
{
U_TRACE(5, "IRDataSession::toBuffer()")
U_INTERNAL_ASSERT_EQUALS(u_buffer_len, 0)
(void) buffer_data.reserve(U_CAPACITY);
buffer_data.snprintf(U_CONSTANT_TO_PARAM("%ld %u \"%.*s\" \"%.*s\" ["), creation, for_page, U_STRING_TO_TRACE(timerun), U_STRING_TO_TRACE(query));
sz = vec.size();
for (uint32_t i = 0; i < sz; ++i) vec[i]->toBuffer(buffer_data);
(void) buffer_data.append(U_CONSTANT_TO_PARAM(" ]"));
buffer_len = buffer_data.size();
U_RETURN(buffer_data.data());
}
virtual void fromStream(istream& is)
{
U_TRACE(5, "IRDataSession::fromStream(%p)", &is)
U_ASSERT(vec.empty())
U_INTERNAL_ASSERT_EQUALS(sz, 0)
# ifdef U_STDCPP_ENABLE
is >> creation
>> for_page;
is.get(); // skip ' '
timerun.get(is);
is.get(); // skip ' '
query.get(is);
is.get(); // skip ' '
is >> vec;
sz = vec.size();
# endif
last_access = u_now->tv_sec;
}
// STREAMS
#ifdef U_STDCPP_ENABLE
friend istream& operator>>(istream& is, IRDataSession& d) { d.fromStream(is); return is; }
friend ostream& operator<<(ostream& os, IRDataSession& d) { d.toStream(os); return os; }
#endif
// DEBUG
#ifdef DEBUG
const char* dump(bool breset) const { return ""; }
#endif
};
#endif