
// WS-POS version 1.3 参照実装
// 2013/05/23 13:39:34

using UnifiedPOS.GestureControl.V1_4;

using System.ServiceModel;
using System.Reflection;
using System.Configuration;
using WSPOSInitiative.Common;

namespace WSPOSInitiative.GestureControl
{
    /// <summary>
    /// GestureControlService
    /// </summary>
    [ServiceBehavior(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GestureControl/",
            InstanceContextMode = InstanceContextMode.Single,
            ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class GestureControlService : WSPOSInitiative.GestureControl.GestureControlServiceProviderBehaviorCore
    {
        /// <summary>
        /// バージョンを定義してください。
        /// コンストラクタで基底クラスに渡すために
        /// このクラスのインスタンス確立前に決定される必要があるので、
        /// staticで宣言されています。
        /// 
        /// Please define a version. 
        /// Since it needs to be determined before instance establishment of this class 
        /// in order to pass a base class by a constructor, it is declared by static. 
        /// </summary>
        private static UposVersion _deviceControlVersion = new UposVersion() { Major = 1, Minor = 16, Build = 0 };

        /// <summary>
        /// バージョンを定義。WS-POSサービスのバージョン。
        /// コンストラクタで基底クラスに渡すために
        /// このクラスのインスタンス確立前に決定される必要があるので、
        /// staticで宣言されています。
        /// 
        /// A version is defined. The version of WS-POS service. 
        /// Since it needs to be determined before instance establishment of this class 
        /// in order to pass a base class by a constructor, it is declared by static. 
        /// </summary>
        private static UposVersion _wsposVersion = new UposVersion() { Major = 1, Minor = 4, Build = 0 };

        /// <summary>
        /// DeviceControlDescriptionを定義してください。
        /// このクラスのインスタンス確立前に決定される必要があるので、
        /// staticまたはconstで宣言されています。変更されない場合はconstを用いてください。
        /// 
        /// Please define DeviceControlDescription. 
        /// Since it needs to be determined before instance establishment of this class, 
        /// it is declared by static or const. Please use const, when not changed. 
        /// </summary>
        private const string DeviceControlDescription = "WS-POS Implementation POS for .net GestureControl Device";

        #region Constructor

        /// <summary>
        /// コンストラクタを定義してください。
        /// 基底クラスに、デバイス名、DeviceControlDescription、バージョン、セッションタイムアウト、セッションタイムアウトチェック間隔、ロングポーリングタイムアウトを渡してください。
        /// 
        /// Please define the constructor. 
        /// Please pass a device name, DeviceControlDescription, a version, session timeout, a session time-out check interval, and long polling timeout to a base class. 
        /// </summary>
        public GestureControlService()
            : base(
                DeviceControlDescription,
                _deviceControlVersion,
                _wsposVersion,
                StringArrayContainsHelper.Contains(ConfigurationManager.AppSettings.AllKeys, "GestureControlService_ProviderSessionTimeoutCheckPeriod") ? int.Parse(ConfigurationManager.AppSettings["GestureControlService_ProviderSessionTimeoutCheckPeriod"]) : ProviderSessionTimeoutCheckPeriodDefaultValue
            )
        {
        }


        #endregion
    }
}
