sample/filter/c2i.cpp

/*
  Интерфейс сервера для клиента #2.
*/

#include "c2i.hpp"

#include <oess_1/io/custom/ace/h/Date_Time.h>

#include <so_4/rt/h/rt.hpp>
#include <so_4/rt/h/sol_msg_field_oess_io_custom.hpp>

// Реализация ручной сериализации.
oess_1::io::istream_t &
operator>>( oess_1::io::istream_t & s, server_act_t & o )
{
  return ( s >> o.m_client_timestamp >> o.m_server_timestamp );
}

oess_1::io::ostream_t &
operator<<( oess_1::io::ostream_t & s, const server_act_t & o )
{
  return ( s << o.m_client_timestamp << o.m_server_timestamp );
}

// Реализация сообщений.

c2i_t::msg_request::msg_request()
  {}

c2i_t::msg_request::msg_request(
  const server_act_t & act )
  : m_act( act )
  {}

c2i_t::msg_reply::msg_reply()
  {}

c2i_t::msg_reply::msg_reply(
  const server_act_t & act,
  const ACE_Date_Time & client_reply_time )
  : m_act( act )
  , m_client_reply_time( client_reply_time )
  {}

// Описание агента для SObjectizer.
SOL4_CLASS_START( c2i_t )

  SOL4_MSG_START( msg_request, c2i_t::msg_request )
    // Это поле сериализуется вручную.
    SOL4_MSG_FIELD_OESS_IO_CUSTOM( m_act )
  SOL4_MSG_FINISH()

  SOL4_MSG_START( msg_reply, c2i_t::msg_reply )
    // Эти поля сериализуются вручную.
    SOL4_MSG_FIELD_OESS_IO_CUSTOM( m_act )
    SOL4_MSG_FIELD_OESS_IO_CUSTOM( m_client_reply_time )
  SOL4_MSG_FINISH()

SOL4_CLASS_FINISH()

// Реализация агента.
c2i_t::c2i_t()
  :
    // Сразу назначаем имя агента.
    base_type_t( agent_name() )
{
}

c2i_t::~c2i_t()
{
}

const std::string &
c2i_t::agent_name()
{
  // Имя глобального агента.
  static std::string name( "a_c2i" );
  return name;
}

const std::string &
c2i_t::agent_type()
{
  // Тип глобального агента. В точности тоже имя,
  // которое указано в SOL4_CLASS_START.
  static std::string type_name( "c2i_t" );
  return type_name;
}

Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:45 2008. Создано системой  doxygen1.5.6 Intervale SourceForge.net Logo