예제 #1
0
 private static void DoSomething(MessageBroadcast broadcaster)
 {
     Console.WriteLine("Doing something special here...");
     if (!(broadcaster is null))
     {
         broadcaster.Invoke("Test");
     }
 }
 public PrivateMessageReceivedEventArgs(IUser user, IServer server, MessageFormat format, MessageBroadcast broadcast, string message)
 {
     this.User = user;
     this.Server = server;
     this.Format = format;
     this.Broadcast = broadcast;
     this.Message = message;
 }
 public PublicMessageReceivedEventArgs(IUser fromUser, IServer server, IChannel channel, MessageFormat format, MessageBroadcast broadcast, string message)
 {
     this.FromUser = fromUser;
     this.Server = server;
     this.Channel = channel;
     this.Format = format;
     this.Broadcast = broadcast;
     this.Message = message;
 }
예제 #4
0
 private void HandleMessage(IPEndPoint remote, int index, MessageBroadcast message)
 {
     if (string.IsNullOrWhiteSpace(message.Target))
     {
         HandleGroupMessage(remote, index, message);
     }
     else
     {
         HandlePrivateMessage(remote, index, message);
     }
 }
예제 #5
0
        public Request(IUser user, IServer server, MessageFormat messageFormat, MessageBroadcast messageBroadcast, string message, IConnection connection)
        {
            Contract.Requires<ArgumentNullException>(user != null, "user");
            Contract.Requires<ArgumentNullException>(server != null, "server");
            Contract.Requires<ArgumentNullException>(message != null, "message");
            Contract.Requires<ArgumentNullException>(connection != null, "connection");

            this.User = user;
            this.Server = server;
            this.Format = messageFormat;
            this.Broadcast = messageBroadcast;
            this.Message = message;
            this.connection = connection;
        }
예제 #6
0
        private void HandlePrivateMessage(IPEndPoint remote, int index, MessageBroadcast message)
        {
            var status = StatusCode.Success;
            var reason = string.Empty;

            IUser source = null;
            IUser target = null;

            if (!_users.TryGet(remote, out source))
            {
                status = StatusCode.NotAuthorized;
                reason = "User is not logged in";
            }
            else if (!_users.TryGet(message.Target, out target))
            {
                status = StatusCode.UserNotFound;
                reason = "Target not found";
            }
            else if (string.IsNullOrWhiteSpace(message.Message))
            {
                status = StatusCode.Failure;
                reason = $"Invalid parameters: {nameof(MessageBroadcast.Message)}";
            }

            _core.Send(new MessageResult {
                Status = status, Reason = reason
            }, remote, index);
            if (status != StatusCode.Success)
            {
                return;
            }

            message.Source = source.Name;

            _core.Send(message, target.Remote);
        }
예제 #7
0
 private void HandleGroupMessage(IPEndPoint remote, int index, MessageBroadcast message)
 {
     _core.Send(new MessageResult {
         Status = StatusCode.Failure, Reason = "Not supported"
     }, remote, index);
 }