#pragma once
/// ****************************************************************************
/// @file   
/// @author Dr.Neeton
/// @date   2015/03/04 - 2015/03/04
/// 
/// @brief  ネットワーク用転送パイプ関連
/// 
/// ****************************************************************************

#include "CPL_WIN_NetworkPipeTransceiver.h"

namespace CPL {
namespace WIN {

// _____________________________________________________________________________
/// @brief コンストラクタ
/// 
/// ※ このコンストラクタは派生クラスから呼んではいけない。
/// 
/// @param[in] in_name_pipe
///   : 識別用の転送パイプ名を指定します。
/// @param[in] in_size_pipe
///   : 転送に使う共有メモリサイズを指定します。
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NetworkPipeSender::NetworkPipeSender
( _in<td_tstring> in_name_pipe
, _in<size_t    > in_size_pipe
) : Core::PipeBase( in_name_pipe )
  , ProcessPipeSender
    ( in_name_pipe
    , in_size_pipe
    , sdptr<Core::NetworkMutex>(nullptr)
    , (NetworkSharedBuffer*)nullptr
    )
{
  //ChangeMode( false, TimePoint::Max() );
  // スレッド開始
  this->Start();
}


// _____________________________________________________________________________
/// @brief コンストラクタ
/// 
/// ※ このコンストラクタは派生クラスから呼んではいけない。
/// 
/// @param[in] in_name_pipe
///   : 識別用の転送パイプ名を指定します。
/// @param[in] in_size_pipe
///   : 転送に使う共有メモリサイズを指定します。
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NetworkPipeReceiver::NetworkPipeReceiver
( _in<td_tstring> in_name_pipe
, _in<size_t    > in_size_pipe
) : Core::PipeBase( in_name_pipe )
  , ProcessPipeReceiver
    ( in_name_pipe
    , in_size_pipe
    , sdptr<Core::NetworkMutex>(nullptr)
    , (NetworkSharedBuffer*)nullptr
    )
{
  //ChangeMode( false, TimePoint::Max() );
  // スレッド開始
  this->Start();
}




// _____________________________________________________________________________
/// @brief コンストラクタ
/// 
/// ※ このコンストラクタは派生クラスから呼んではいけない。
/// 
/// @param[in] in_name_pipe
///   : 識別用の転送パイプ名を指定します。
/// @param[in] in_size_pipe
///   : 転送に使う共有メモリサイズを指定します。
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NetworkPipeTransceiver::NetworkPipeTransceiver
( _in<td_tstring> in_name_pipe
, _in<size_t    > in_size_pipe
) : Core::PipeBase( in_name_pipe )
  , NetworkPipeSender
    ( in_name_pipe
    , in_size_pipe
    )
  , NetworkPipeReceiver
    ( in_name_pipe
    , in_size_pipe
    )
{
  // スレッド開始
  NetworkPipeSender::Start();
  NetworkPipeReceiver::Start();
}

// _____________________________________________________________________________
/// @brief デストラクタ
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NetworkPipeTransceiver::~NetworkPipeTransceiver()
{}





} // namespace WIN
} // namespace CPLvv