public void OnErrorRaised(string message, string code = null, string file = null, int lineNumber = -1, int columnNumber = -1, int endLineNumber = -1, int endColumnNumber = -1, string helpKeyword = null, string senderName = null)
        {
            BuildErrorEventArgs args = new BuildErrorEventArgs(null, code, file, lineNumber, columnNumber, endLineNumber, endColumnNumber, message, helpKeyword, senderName);

            ErrorRaised?.Invoke(this, args);
            OnAnyEventRaised(args);
        }
Example #2
0
        /// <summary>
        /// プロパティアイテムの値が変更された
        /// </summary>
        /// <param name="sender">object</param>
        /// <param name="e">PropertyChangedEventArgs</param>
        protected virtual void OwnedPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var property = sender as PropertyItemBase;

            if (property != null)
            {
                if (e.PropertyName == "Value")
                {
                    RaisePropertyChanged(property.Name);
                }

                // モデルに変更を通知する
                if (e.PropertyName == "IsChanged" && (IsChangedFilter?.Invoke(property) ?? true))
                {
                    RaisePropertyChanged(e.PropertyName);
                }

                // モデルにエラーを通知する
                if (e.PropertyName == "HasError" && (HasErrorFilter?.Invoke(property) ?? true))
                {
                    RaisePropertyChanged(e.PropertyName);
                    if (property.HasError)
                    {
                        ErrorRaised?.Invoke(this, new PropertyItemEventArgs(property));
                    }
                    else
                    {
                        ErrorCleard?.Invoke(this, new PropertyItemEventArgs(property));
                    }
                }
            }
        }
        private void Run()
        {
            while (!isTerminal)
            {
                if (this.msgQueue.IsEmpty)
                {
                    Thread.Sleep(5);
                }
                else
                {
                    HostarLogBean bean = null;
                    this.msgQueue.TryDequeue(out bean);
                    if (bean != null)
                    {
                        string log = bean.Message;
                        if (bean.Module == 0)
                        {
                            log = "[前模组]-" + bean.Message;
                        }
                        else if (bean.Module == 1)
                        {
                            log = "[后模组]-" + bean.Message;
                        }

                        switch (bean.LogLevel)
                        {
                        case MsgLevel.Debug:
                            basicLog?.Debug(log);
                            break;

                        case MsgLevel.Info:
                            basicLog?.Info(log);
                            InfoRaised?.Invoke(bean);
                            break;

                        case MsgLevel.Warn:
                            basicLog?.Warn(log);
                            ErrorRaised?.Invoke(bean);
                            break;

                        case MsgLevel.Error:
                            errLog?.Error(log);
                            ErrorRaised?.Invoke(bean);
                            break;

                        case MsgLevel.Fatal:
                            errLog?.Fatal(log);
                            ErrorRaised?.Invoke(bean);
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
        }
Example #4
0
        /// <summary>
        /// Raise one of the events that is appropriate for the type of the BuildEventArgs
        /// </summary>
        public void Dispatch(BuildEventArgs buildEvent)
        {
            if (buildEvent is BuildMessageEventArgs)
            {
                MessageRaised?.Invoke(null, (BuildMessageEventArgs)buildEvent);
            }
            else if (buildEvent is TaskStartedEventArgs)
            {
                TaskStarted?.Invoke(null, (TaskStartedEventArgs)buildEvent);
            }
            else if (buildEvent is TaskFinishedEventArgs)
            {
                TaskFinished?.Invoke(null, (TaskFinishedEventArgs)buildEvent);
            }
            else if (buildEvent is TargetStartedEventArgs)
            {
                TargetStarted?.Invoke(null, (TargetStartedEventArgs)buildEvent);
            }
            else if (buildEvent is TargetFinishedEventArgs)
            {
                TargetFinished?.Invoke(null, (TargetFinishedEventArgs)buildEvent);
            }
            else if (buildEvent is ProjectStartedEventArgs)
            {
                ProjectStarted?.Invoke(null, (ProjectStartedEventArgs)buildEvent);
            }
            else if (buildEvent is ProjectFinishedEventArgs)
            {
                ProjectFinished?.Invoke(null, (ProjectFinishedEventArgs)buildEvent);
            }
            else if (buildEvent is BuildStartedEventArgs)
            {
                BuildStarted?.Invoke(null, (BuildStartedEventArgs)buildEvent);
            }
            else if (buildEvent is BuildFinishedEventArgs)
            {
                BuildFinished?.Invoke(null, (BuildFinishedEventArgs)buildEvent);
            }
            else if (buildEvent is CustomBuildEventArgs)
            {
                CustomEventRaised?.Invoke(null, (CustomBuildEventArgs)buildEvent);
            }
            else if (buildEvent is BuildStatusEventArgs)
            {
                StatusEventRaised?.Invoke(null, (BuildStatusEventArgs)buildEvent);
            }
            else if (buildEvent is BuildWarningEventArgs)
            {
                WarningRaised?.Invoke(null, (BuildWarningEventArgs)buildEvent);
            }
            else if (buildEvent is BuildErrorEventArgs)
            {
                ErrorRaised?.Invoke(null, (BuildErrorEventArgs)buildEvent);
            }

            AnyEventRaised?.Invoke(null, buildEvent);
        }
Example #5
0
        /// <summary>
        /// Force raise of event 'ServicErrorRaised'
        /// </summary>
        /// <param name="error">Raised error</param>
        /// <param name="context">Context of error</param>
        protected bool RaiseServiceErrorRaised(Exception error, string context)
        {
            //Dichiaro l'argormento dell'evento
            ServiceErrorRaisedEventArgs arguments = new ServiceErrorRaisedEventArgs(error, context);

            //Se il gestore è stato collegatio
            ErrorRaised?.Invoke(this, arguments);

            //Ritorno il flag di handled dell'evento
            return(arguments.MarkAsHandled);
        }
Example #6
0
 private void SendDhcpMessage(string dest, DhcpMessgeType msgType, DhcpData data, OwnedIpAddress newClient)
 {
     try
     {
         var dataToSend = data.BuildSendData(msgType, newClient.Ip);
         udpListener.SendData(dest, dataToSend);
     }
     catch (Exception e)
     {
         ErrorRaised?.Invoke(this, new ErrorMessageEventArgs {
             Message = e.Message
         });
     }
 }
Example #7
0
 // function to start the DHCP server
 // port 67 to receive, 68 to send
 public void Start()
 {
     try
     {   // start the DHCP server
         // assign the event handlers
         udpListener           = new UdpListener(67, 68, _settings.ServerIp.ToString());
         udpListener.Received += UdpListener_Received;
     }
     catch (Exception e)
     {
         ErrorRaised?.Invoke(this, new ErrorMessageEventArgs {
             Message = e.Message
         });
         throw e;
     }
 }
Example #8
0
        protected virtual void RaiseError(
            Exception e         = null,
            string errorMessage = null,
            SyncErrorEventArgs.ErrorSeverity errorSeverity = SyncErrorEventArgs.ErrorSeverity.Minor)
        {
            SyncErrorEventArgs args = new SyncErrorEventArgs()
            {
                Exception     = e,
                Severity      = errorSeverity,
                ErrorMessage  = errorMessage,
                TimeStamp     = DateTime.Now,
                TypeOfElement = GetType()
            };

            ErrorRaised?.Invoke(this, args);
        }
Example #9
0
        void Start()
        {
            InitializePacketObservables();

            var bandwidthInterval = TimeSpan.FromMilliseconds(100);

            Observable.Interval(bandwidthInterval).Subscribe(_ =>
            {
                var ts = TimeUtils.NowTimestamp - 1000;
                bandwidth.Flush(ts);
                _receivedBytes.SetValueAndForceNotify(bandwidth.GetReceivedBytesPerSeconds(ts));
                _sentBytes.SetValueAndForceNotify(bandwidth.GetSentBytesPerSecond(ts));
            }).AddTo(this);

            var heartbeatInterval = TimeSpan.FromSeconds(Config.HeartbeatInterval);

            Observable.Interval(heartbeatInterval).SkipUntil(ReadyObservable).Subscribe(_ =>
            {
                SendImmediate(new HeartbeatPacket());
            }).AddTo(this);

            var flushInterval = TimeSpan.FromMilliseconds(300);

            Observable.Interval(flushInterval).SkipUntil(ReadyObservable).Subscribe(_ => Flush()).AddTo(this);

            ErrorRaised.Subscribe(msg =>
            {
                Debug.LogError($"Error: " + ws.error);

                if (loop != null)
                {
                    loop.Dispose();
                    loop = null;
                }

                // dont destory on load로 등록된 네트워크 관련 객체 삭제
                // 네트워크 접속 실패시 처음부터 재시작하는게 목적
                // TOOD 최초 접속 에러와 게임 도중 접속 에러를 분리하기
                Destroy(PingChecker.Instance.gameObject);
                Destroy(ConnectionManager.Instance.gameObject);

                SceneManager.LoadScene(initialScene, LoadSceneMode.Single);
            }).AddTo(this);

            loop = Observable.FromCoroutine(BeginLoop).Subscribe();
        }
Example #10
0
        private async Task PingLoopAsync(SocketSession session, CancellationToken cancellationToken = default)
        {
            try
            {
                while (!cancellationToken.IsCancellationRequested && this.IsConnected)
                {
                    await Task.Delay(session.PingInterval, cancellationToken).ConfigureAwait(false);

                    if (!cancellationToken.IsCancellationRequested && this.IsConnected)
                    {
                        await SendInternalAsync(_pingMessage, null, cancellationToken).ConfigureAwait(false);
                    }
                }
            }
            catch (OperationCanceledException) { }
            catch (Exception ex)
            {
                ErrorRaised?.Invoke(this, new UnhandledExceptionEventArgs(ex, true));
            }
        }
Example #11
0
        public void UdpListener_Received(byte[] data, IPEndPoint endPoint)
        {
            try
            {
                var dhcpData = new DhcpData(data)
                {
                    RelatedServer = this
                };
                var msgType = dhcpData.GetCurrentMessageType();
                var client  = dhcpData.GetClientInfo();
                switch (msgType)
                {
                case DhcpMessgeType.DHCP_DISCOVER:
                    MessageRaised?.Invoke(this, new MessageEventArgs {
                        Message = "DHCPDISCOVER received."
                    });
                    Discovered?.Invoke(client);
                    var newIp = ownedIpAddressPool.Find(x => (x.AuthorizedClientMac == client.MacAddress) || (x.IsAllocated == false && x.AuthorizedClientMac == null));
                    if (newIp.Ip == null)
                    {
                        MessageRaised?.Invoke(this, new MessageEventArgs {
                            Message = "No ip is available to allocate."
                        });
                        return;
                    }
                    MessageRaised?.Invoke(this, new MessageEventArgs {
                        Message = "DHCPOFFER sent."
                    });
                    // MUST be unicast over raw socket (unimplemented)
                    // broadcast used
                    SendDhcpMessage(DhcpMessgeType.DHCP_OFFER, dhcpData, newIp);
                    break;

                case DhcpMessgeType.DHCP_REQUEST:
                    MessageRaised?.Invoke(this, new MessageEventArgs {
                        Message = "DHCPREQUEST received."
                    });
                    Requested?.Invoke(client);
                    switch (GetDhcpRequestType(client, endPoint))
                    {
                    // respond to client which has responded to DHCPOFFER message from this server
                    case DhcpRequestType.Selecting:
                        MessageRaised?.Invoke(this, new MessageEventArgs {
                            Message = "Response to DHCPREQUEST generated during SELECTING state."
                        });
                        if (_settings.ServerIp.Equals(client.ServerAddress))
                        {
                            var allocatedIp = ownedIpAddressPool.Find(x => x.Ip.Equals(client.RequestAddress));
                            if (allocatedIp.Ip != null && !allocatedIp.IsAllocated)
                            {
                                allocatedIp.IsAllocated         = true;
                                allocatedIp.AuthorizedClientMac = client.MacAddress;
                                MessageRaised?.Invoke(this, new MessageEventArgs {
                                    Message = "DHCPACK sent."
                                });
                                // broadcast
                                SendDhcpMessage(DhcpMessgeType.DHCP_ACK, dhcpData, allocatedIp);
                            }
                        }
                        break;

                    case DhcpRequestType.InitReboot:
                        MessageRaised?.Invoke(this, new MessageEventArgs {
                            Message = "Response to DHCPREQUEST generated during INIT-REBOOT state."
                        });
                        if (!client.RelayAgentAddress.Equals(IPAddress.Any))
                        {
                            MessageRaised?.Invoke(this, new MessageEventArgs {
                                Message = "Relay agent is not supported in this version."
                            });
                        }
                        var rebootIp = ownedIpAddressPool.Find(x => x.Ip.Equals(client.RequestAddress));
                        if (rebootIp.Ip != null && rebootIp.AuthorizedClientMac == client.MacAddress)
                        {
                            // broadcast
                            SendDhcpMessage(DhcpMessgeType.DHCP_ACK, dhcpData, rebootIp);
                            MessageRaised?.Invoke(this, new MessageEventArgs {
                                Message = "DHCPACK sent."
                            });
                        }
                        break;

                    case DhcpRequestType.ReNewing:
                        MessageRaised?.Invoke(this, new MessageEventArgs {
                            Message = "Response to DHCPREQUEST generated during RENEWING state."
                        });
                        var reNewIp = ownedIpAddressPool.Find(x => x.Ip.Equals(client.ClientAddress));
                        if (reNewIp.Ip != null && reNewIp.AuthorizedClientMac == client.MacAddress)
                        {
                            // unicast
                            SendDhcpMessage(client.ClientAddress.ToString(), DhcpMessgeType.DHCP_ACK, dhcpData, reNewIp);
                            MessageRaised?.Invoke(this, new MessageEventArgs {
                                Message = "DHCPACK sent."
                            });
                        }
                        break;

                    case DhcpRequestType.ReBinding:
                        MessageRaised?.Invoke(this, new MessageEventArgs {
                            Message = "Response to DHCPREQUEST generated during REBINDING state."
                        });
                        var reBindIp = ownedIpAddressPool.Find(x => x.IsAllocated == false);
                        if (reBindIp.Ip != null)
                        {
                            reBindIp.IsAllocated         = true;
                            reBindIp.AuthorizedClientMac = client.MacAddress;
                            // broadcast
                            SendDhcpMessage(DhcpMessgeType.DHCP_ACK, dhcpData, reBindIp);
                            MessageRaised?.Invoke(this, new MessageEventArgs {
                                Message = "DHCPACK sent."
                            });
                        }
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                    break;

                case DhcpMessgeType.DHCP_DECLINE:
                    MessageRaised?.Invoke(this, new MessageEventArgs {
                        Message = "DHCPDECLINE received."
                    });
                    var declinedIp = ownedIpAddressPool.Find(x => x.Ip.Equals(client.ClientAddress));
                    if (declinedIp.Ip != null)
                    {
                        ownedIpAddressPool.Remove(declinedIp);
                    }
                    break;

                case DhcpMessgeType.DHCP_RELEASE:
                    MessageRaised?.Invoke(this, new MessageEventArgs {
                        Message = "DHCPRELESE received."
                    });
                    var releasedIp = ownedIpAddressPool.Find(x => x.Ip.Equals(client.ClientAddress));
                    if (releasedIp.Ip != null)
                    {
                        releasedIp.IsAllocated = false;
                    }
                    break;

                case DhcpMessgeType.DHCP_INFORM:
                    MessageRaised?.Invoke(this, new MessageEventArgs {
                        Message = "DHCPINFORM received."
                    });
                    // unicast
                    SendDhcpMessage(client.ClientAddress.ToString(), DhcpMessgeType.DHCP_ACK, dhcpData, null);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            catch (Exception e)
            {
                ErrorRaised?.Invoke(this, new ErrorMessageEventArgs {
                    Message = e.Message
                });
                Terminate();
                throw e;
            }
        }
Example #12
0
 /// <summary>
 /// Event invocator for the <see cref="ErrorRaised"/> event
 /// </summary>
 protected virtual void OnErrorRaised(Exception error)
 {
     ErrorRaised?.Invoke(this, new ObjectStoreErrorRaisedEventArgs(error));
 }
Example #13
0
 private void OnErrorRaised(string error)
 {
     ErrorRaised?.Invoke(this, new StringEventArgs(error));
 }
Example #14
0
 private void EventSourceOnErrorRaised(object sender, BuildErrorEventArgs e)
 {
     ErrorRaised?.Invoke(sender, e);
 }
Example #15
0
 protected virtual void OnErrorRaised(OnErrorExceptionEventArgs e)
 {
     ErrorRaised?.Invoke(this, e);
 }
Example #16
0
 protected virtual void RaiseReadError(Exception e, string message = null)
 {
     ErrorRaised?.Invoke(this, new SyncErrorEventArgs());
 }
Example #17
0
#pragma warning restore 0067

        public void LogErrorEvent(BuildErrorEventArgs args)
        {
            ErrorRaised?.Invoke(this, args);
            AnyEventRaised?.Invoke(this, args);
        }
Example #18
0
        private async Task ConnectionLoopAsync()
        {
            Exception closeException = null;

            try
            {
                _lastMessageID = 7;
                _connectionCts = new CancellationTokenSource();
                ArraySegment <byte> buffer = new ArraySegment <byte>(new byte[1024]);

                while (_connectionCts?.Token.IsCancellationRequested != true)
                {
                    // read from stream
                    SocketReceiveResult receivedMessage = await ReceiveAsync(buffer, _connectionCts.Token).ConfigureAwait(false);

                    if (!IsAnythingReceived(receivedMessage))
                    {
                        continue;
                    }

                    // parse the message
                    if (receivedMessage.MessageType == WebSocketMessageType.Text)
                    {
                        SocketMessage msg = SocketMessage.Parse(this.MessageEncoding.GetString(receivedMessage.ContentBytes));

                        // if message is binary, read them from stream as well
                        List <byte[]> binaryMessages = new List <byte[]>(msg.BinaryMessagesCount);
                        for (int i = 0; i < msg.BinaryMessagesCount; i++)
                        {
                            SocketReceiveResult receivedBinaryMessage = await ReceiveAsync(buffer, _connectionCts.Token).ConfigureAwait(false);

                            if (!IsAnythingReceived(receivedBinaryMessage))
                            {
                                continue;
                            }
                            if (receivedBinaryMessage.MessageType == WebSocketMessageType.Text)
                            {
                                throw new InvalidDataException("Received a text message while a binary message was expected");
                            }
                            binaryMessages.Add(receivedBinaryMessage.ContentBytes);
                        }
                        // raise event
                        OnTextMessageReceived(msg, binaryMessages);
                    }
                    else
                    {
                        throw new InvalidDataException("Received a binary message while a text message was expected");
                    }
                }
            }
            catch (Exception ex)
            {
                closeException = ex;
                // ignore premature close and task cancellations
                // these should be treated as normal close event, not an error
                if (!IsClosedPrematurelyException(ex) && !(ex is OperationCanceledException))
                {
                    ErrorRaised?.Invoke(this, new UnhandledExceptionEventArgs(ex, true));
                }
            }
            finally
            {
                // craft closed event, keeping the exception in mind
                WebSocketCloseStatus status = _websocketClient?.CloseStatus ??                                                       // websocketclient reported status has priority
                                              (IsClosedPrematurelyException(closeException) ? WebSocketCloseStatus.ProtocolError :   // if premature close, report as protocol error
                                               (closeException is OperationCanceledException) ? WebSocketCloseStatus.NormalClosure : // if operation canceled, report as normal closure
                                               WebSocketCloseStatus.Empty);                                                          // otherwise report unknown status
                string message = _websocketClient?.CloseStatusDescription ?? closeException?.Message;

                // clear cancels and nulls cts, so IsConnected will start returning false
                this.Clear();
                Disconnected?.Invoke(this, new SocketClosedEventArgs(status, message, closeException));
            }
        }