/// <summary> /// 触发数据绑定 /// </summary> /// <param name="e">绑定事件参数</param> protected void OnBind(BindEventArgs e) { if (Bind != null) { Bind(this, e); } }
/// <summary> /// 绑定实体数据 /// </summary> /// <param name="entity">实体对象</param> /// <param name="isCopy">是否复制</param> public virtual void BindMethod(E entity, bool isCopy = false) { IsInnerSetValue = true; CurrentEntity = entity; BindEventArgs args = new BindEventArgs(); args.IsNew = IsNew; args.IsCopy = isCopy; args.BindEntity = entity; OnBind(args); if (args.IsSuccess) { if (IsNew && Metadata != null && Grid != null && Metadata.ParentFieldName.IsNotEmpty()) { int parentID = 0; if (ParentEntity != null) { parentID = ParentEntity.ID; } CurrentEntity.SetPropertyValue(Metadata.ParentFieldName, parentID); } if (EditPanel != null) { FormHelper.BindControlValue(EditPanel, entity); } if (StatusPanel != null) { FormHelper.BindControlValue(StatusPanel, entity); } SetButtonStatus(); } IsInnerSetValue = false; }
/// <summary> /// 触发数据绑定后 /// </summary> /// <param name="e">绑定事件后参数</param> protected void OnAfterBind(BindEventArgs e) { if (AfterBind != null) { AfterBind(this, e); } }
/// <summary> /// 绑定实体数据 /// </summary> /// <param name="entity">实体对象</param> /// <param name="isCopy">是否复制</param> public virtual void BindMethod(E entity, bool isCopy = false) { IsInnerSetValue = true; CurrentEntity = entity; BindEventArgs args = new BindEventArgs(); args.IsNew = IsNew; args.IsCopy = isCopy; args.BindEntity = entity; OnBeforeBind(args); if (args.IsSuccess) { if (EditPanel != null) { FormHelper.BindControlValue(EditPanel, CurrentEntity); } if (StatusPanel != null) { FormHelper.BindControlValue(StatusPanel, CurrentEntity); } SetButtonStatus(); args = new BindEventArgs(); args.IsNew = IsNew; args.IsCopy = isCopy; args.BindEntity = entity; OnAfterBind(args); } IsInnerSetValue = false; }
/// <summary> /// Клиент пробует подключиться /// </summary> void communicator_OnBind(object source, BindEventArgs e) { SmppBindResp pdu = new SmppBindResp(); pdu.SequenceNumber = e.BindPdu.SequenceNumber; if (!communicator.IsBinded) { //Биндинг соединения AccountBase account = null; try { account = billingprov.GetAccount(e.BindPdu.SystemId, e.BindPdu.Password); billing = new BillingProcessor(account); pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; e.IsBindSucessfull = true; LoggerService.Logger.TraceEvent(TraceEventType.Information, LoggingCatoegory.Protocol.IntValue(), string.Format("Client {0} binded", e.BindPdu.SystemId)); PerformanceCountersService.GetCounter(CONNECTION_COUNTER_NAME).Increment(); } catch (Exception ex) { LoggerService.Logger.TraceEvent(TraceEventType.Error, LoggingCatoegory.Protocol.IntValue(), string.Format("Bind failed in fact of account for user {0} cannot be get. Error {1}", e.BindPdu.SystemId, ex.ToString())); pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RBINDFAIL; e.IsBindSucessfull = false; } } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RALYBND; e.IsBindSucessfull = false; } communicator.SendPdu(pdu); }
/// <summary> /// Fires an event off based on what Pdu is sent in. /// </summary> /// <param name="response">The response to fire an event for.</param> private void FireEvents(Pdu response) { //понеслась... if (response is SmppBindResp) { SmppBindResp resp = (SmppBindResp)response; if (resp.CommandStatus == (uint)SmppCommandStatus.ESME_ROK) { _isBinded = true; //Мы сопоставлены, все отлично } if (OnBindResp != null) { OnBindResp(this, new BindRespEventArgs(resp)); } } else if (response is SmppUnbindResp) { _isBinded = false; //Отсоединяемся asClient.Disconnect(); if (OnUnboundResp != null) { OnUnboundResp(this, new UnbindRespEventArgs((SmppUnbindResp)response)); } } else if (response is SmppAlertNotification) { if (OnAlert != null) { OnAlert(this, new AlertEventArgs((SmppAlertNotification)response)); } } else if (response is SmppSubmitSmResp) { if (OnSubmitSmResp != null) { OnSubmitSmResp(this, new SubmitSmRespEventArgs((SmppSubmitSmResp)response)); } } else if (response is SmppEnquireLinkResp) { if (OnEnquireLinkResp != null) { OnEnquireLinkResp(this, new EnquireLinkRespEventArgs((SmppEnquireLinkResp)response)); } } else if (response is SmppSubmitSm) { if (OnSubmitSm != null) { OnSubmitSm(this, new SubmitSmEventArgs((SmppSubmitSm)response)); } else { //Нет отбработчика, значит сами SmppSubmitSmResp pdu = new SmppSubmitSmResp(); pdu.SequenceNumber = response.SequenceNumber; pdu.MessageId = System.Guid.NewGuid().ToString().Substring(0, 10); if (_serverMode) { if (_isBinded) { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RSUBMITFAIL; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RINVBNDSTS; } } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; } SendPdu(pdu); } } else if (response is SmppQuerySm) { if (OnQuerySm != null) { OnQuerySm(this, new QuerySmEventArgs((SmppQuerySm)response)); } else { //Нет обработчика, отдаем пустой ответ "незнаю" SmppQuerySmResp pdu = new SmppQuerySmResp(); pdu.SequenceNumber = response.SequenceNumber; if (_serverMode) { if (_isBinded) { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RQUERYFAIL; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RINVBNDSTS; } } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; } SendPdu(pdu); } } else if (response is SmppGenericNack) { if (OnGenericNack != null) { OnGenericNack(this, new GenericNackEventArgs((SmppGenericNack)response)); } } else if (response is SmppEnquireLink) { if (OnEnquireLink != null) { OnEnquireLink(this, new EnquireLinkEventArgs((SmppEnquireLink)response)); } //Ответ, что с соединением все хорошо. Ответ взад SmppEnquireLinkResp pdu = new SmppEnquireLinkResp(); pdu.SequenceNumber = response.SequenceNumber; pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; SendPdu(pdu); } else if (response is SmppUnbind) { if (OnUnbind != null) { OnUnbind(this, new UnbindEventArgs((SmppUnbind)response)); } else { //Нет обработчика, сами отвечаем SmppUnbindResp pdu = new SmppUnbindResp(); pdu.SequenceNumber = response.SequenceNumber; pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; SendPdu(pdu); } //Отключаемся, не сопряжены asClient.Disconnect(); _isBinded = false; } else if (response is SmppBind) { SmppBind bindCommand = (SmppBind)response; if (_serverMode) { this._AddressRange = bindCommand.AddressRange; this._BindType = bindCommand.BindType; this._NpiType = bindCommand.AddressNpi; this._TonType = bindCommand.AddressTon; this._Version = bindCommand.InterfaceVersion; this._SystemType = bindCommand.SystemType; this._SystemId = bindCommand.SystemId; this._Password = bindCommand.Password; } if (OnBind != null) { BindEventArgs bindEA = new BindEventArgs(bindCommand); OnBind(this, bindEA); _isBinded = bindEA.IsBindSucessfull; } else { //Если нет обработчика, то все плохо, возвращаем стандартный ответ SmppBindResp pdu = new SmppBindResp(); pdu.SequenceNumber = response.SequenceNumber; if (_serverMode) { if (_isBinded) { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RALYBND; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RBINDFAIL; } _isBinded = false; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; _isBinded = true; } pdu.SystemId = "Generic"; SendPdu(pdu); } } else if (response is SmppCancelSm) { if (OnCancelSm != null) { OnCancelSm(this, new CancelSmEventArgs((SmppCancelSm)response)); } else { //Нет обработчика - стандартный ответ "незнаю" SmppCancelSmResp pdu = new SmppCancelSmResp(); pdu.SequenceNumber = response.SequenceNumber; pdu.SequenceNumber = response.SequenceNumber; if (_serverMode) { if (_isBinded) { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RCANCELFAIL; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RINVBNDSTS; } } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; } SendPdu(pdu); } } else if (response is SmppCancelSmResp) { if (OnCancelSmResp != null) { OnCancelSmResp(this, new CancelSmRespEventArgs((SmppCancelSmResp)response)); } } else if (response is SmppCancelSmResp) { if (OnCancelSmResp != null) { OnCancelSmResp(this, new CancelSmRespEventArgs((SmppCancelSmResp)response)); } } else if (response is SmppQuerySmResp) { if (OnQuerySmResp != null) { OnQuerySmResp(this, new QuerySmRespEventArgs((SmppQuerySmResp)response)); } } else if (response is SmppDataSm) { if (OnDataSm != null) { OnDataSm(this, new DataSmEventArgs((SmppDataSm)response)); } else { //Нет обработчика, стандартный ответ SmppDataSmResp pdu = new SmppDataSmResp(); pdu.SequenceNumber = response.SequenceNumber; if (_serverMode) { if (_isBinded) { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RSUBMITFAIL; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RINVBNDSTS; } } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; } pdu.MessageId = "Generic"; SendPdu(pdu); } } else if (response is SmppDataSmResp) { if (OnDataSmResp != null) { OnDataSmResp(this, new DataSmRespEventArgs((SmppDataSmResp)response)); } } else if (response is SmppDeliverSm) { if (OnDeliverSm != null) { OnDeliverSm(this, new DeliverSmEventArgs((SmppDeliverSm)response)); } else { //Нет обработчика - стандартный ответ SmppDeliverSmResp pdu = new SmppDeliverSmResp(); pdu.SequenceNumber = response.SequenceNumber; if (_serverMode) { if (_isBinded) { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RDELIVERYFAILURE; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RINVBNDSTS; } } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; } SendPdu(pdu); } } else if (response is SmppDeliverSmResp) { if (OnDeliverSmResp != null) { OnDeliverSmResp(this, new DeliverSmRespEventArgs((SmppDeliverSmResp)response)); } } else if (response is SmppReplaceSm) { if (OnReplaceSm != null) { OnReplaceSm(this, new ReplaceSmEventArgs((SmppReplaceSm)response)); } else { //Нет обработчика - стандартный ответ SmppReplaceSmResp pdu = new SmppReplaceSmResp(); pdu.SequenceNumber = response.SequenceNumber; if (_serverMode) { if (_isBinded) { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RREPLACEFAIL; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RINVBNDSTS; } } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; } SendPdu(pdu); } } else if (response is SmppReplaceSmResp) { if (OnReplaceSmResp != null) { OnReplaceSmResp(this, new ReplaceSmRespEventArgs((SmppReplaceSmResp)response)); } } else if (response is SmppSubmitMulti) { if (OnSubmitMulti != null) { OnSubmitMulti(this, new SubmitMultiEventArgs((SmppSubmitMulti)response)); } else { //Нет обработчика - стандартный ответ SmppSubmitMultiResp pdu = new SmppSubmitMultiResp(); pdu.SequenceNumber = response.SequenceNumber; if (_serverMode) { if (_isBinded) { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RSUBMITFAIL; } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_RINVBNDSTS; } } else { pdu.CommandStatus = (uint)SmppCommandStatus.ESME_ROK; } SendPdu(pdu); } } else if (response is SmppSubmitMultiResp) { if (OnSubmitMultiResp != null) { OnSubmitMultiResp(this, new SubmitMultiRespEventArgs((SmppSubmitMultiResp)response)); } } }