예제 #1
0
        protected virtual ServiceHandler CreateHandler(ServiceItemSetting setting)
        {
            var contractTypeName = ObjectService.GetTypeName(setting.ContractTypeName);
            var contractType     = TypeHelper.CreateType(contractTypeName, false);

            if (contractType == null || !contractType.IsInterface)
            {
                throw new ArgumentException("ContractType can't be created.", contractTypeName);
            }
            setting.ContractType = contractType;
            return(new ServiceHandler(contractType, this));
        }
예제 #2
0
        public ReadOnlyServiceSettingCollection GetServiceSettings()
        {
            ServiceSettingCollection result = new ServiceSettingCollection();

            foreach(ListViewItem lvi in lvServicesEnabled.Items)
            {
                ServiceSettingsContainer sc = lvi.Tag as ServiceSettingsContainer;
                ServiceItemSetting tsetting = new ServiceItemSetting(sc.Setting.LanguagePair, sc.Setting.Subject, sc.Setting.ServiceItem , TranslateOptions.Instance.GetNetworkSetting(sc.Setting.ServiceItem.Service));
                result.Add(tsetting);
            }
            return new ReadOnlyServiceSettingCollection(result);
        }
 public ServiceSettingsContainer(ServiceItemSetting setting, bool showLanguage)
 {
     this.setting = setting;
         this.showLanguage = showLanguage;
         GenerateName();
 }
예제 #4
0
 public ServiceHandler(ServiceItemSetting setting, Type contractType, ServiceFactory serviceFactory)
 {
     this.Setting        = setting;
     this.ServiceFactory = serviceFactory;
     this.InitService(contractType);
 }
예제 #5
0
        internal static void TranslateWorker(
            ServiceItemSetting translatorSetting,
            AsyncTranslateState translateState)
        {
            if(translateState.IsTerminated)
                return;

            Result tr = translatorSetting.ServiceItem.Translate(translateState.Phrase, translatorSetting.LanguagePair, translatorSetting.Subject, translatorSetting.NetworkSetting, translateState);

            ReportProgressState repState = new ReportProgressState(tr,translateState);

            try
            {  //lock errors when
                translateState.AsyncOperation.Post(ReportProgress, repState);
            }
            catch(InvalidOperationException)
            {

            }
        }
예제 #6
0
        int GetDelayBeforeRun(ServiceItemSetting ts)
        {
            int cnt = 1;
            if(useCount.TryGetValue(ts.ServiceItem, out cnt))
                cnt++;

            useCount[ts.ServiceItem] = cnt;

            int result = ((cnt-1)*1000);

            int koeff = cnt < 10 ? cnt : 10;
            if(cnt < 4)
                koeff = 0;

            result *= koeff;
            return result;
        }
        public override ReadOnlyServiceSettingCollection GetServiceSettings(string phrase, LanguagePair languagePair)
        {
            ServiceSettingCollection result = new ServiceSettingCollection();
            PrepareProcessing();
            foreach (KeyValuePair<LanguagePair, ServiceItemsCollection> kvp in Manager.LanguagePairServiceItems)
            {
                if(disabledSourceLanguages.BinarySearch(kvp.Key.From) >= 0)
                    continue;

                if(disabledTargetLanguages.BinarySearch(kvp.Key.To) >= 0)
                    continue;

                foreach(ServiceItem si in kvp.Value)
                {
                    if(
                        (kvp.Key.From == languagePair.From || languagePair.From == Language.Any) &&
                        (kvp.Key.To == languagePair.To || languagePair.To == Language.Any ||
                        (IncludeMonolingualDictionaryInTranslation && si is MonolingualDictionary)
                        )
                      )
                    {

                        foreach(string subject in si.SupportedSubjects)
                        {
                            if(Subjects.BinarySearch(subject) >= 0)
                            {
                                ServiceItemSetting tsetting = new ServiceItemSetting(kvp.Key, subject, si, TranslateOptions.Instance.GetNetworkSetting(si.Service));
                                result.Add(tsetting);
                            }
                        }
                    }
                }
            }
            return new ReadOnlyServiceSettingCollection(result);
        }