public ConnectionProfile(SynchronizationContext syncContext, ConnectionParameters connParams) { _syncContext = syncContext; this.Parameters = connParams; _messageChannel = SetupMessageChannel(connParams, this, this); }
protected ServiceBase(MessageChannel messageChannel) { Console.WriteLine(messageChannel); _factory = new ConnectionFactory { HostName = "localhost" }; _connection = _factory.CreateConnection(); _channel = _connection.CreateModel(); _channel.QueueDeclare(messageChannel.ToString(), false, false, false, null); _consumer = new EventingBasicConsumer(_channel); _consumer.Received += (model, ea) => { Thread.Sleep(500); var body = Encoding.UTF8.GetString(ea.Body); MessageType messageType; Enum.TryParse(body, out messageType); Console.WriteLine("\t-> [x] " + messageType); ReceiveMessage(messageType); }; _channel.BasicConsume(messageChannel.ToString(), true, _consumer); }
public async void ListSongs(IMessageChannel channel, int page) { //Page enumeration works like an array, so pages actually start from 0, int arrayPage = page - 1; int pageRepresentation = page; int pageCount = (ListSize() + 10 - 1) / 10; if (SongList.Count < 1) { var embedL = new EmbedBuilder() .WithColor(new Color(240, 230, 231)) .WithDescription("Nenhuma musica na lista"); await channel.SendMessageAsync("", false, embedL); return; } else if (ListSize() <= arrayPage * 10) { var embedL = new EmbedBuilder() .WithColor(new Color(240, 230, 231)) .WithDescription("Não é possível exibir a " + page + "ª pagina pois não há musicas suficientes"); await channel.SendMessageAsync("", false, embedL); return; } var embedList = new EmbedBuilder() .WithColor(new Color(240, 230, 231)) .WithFooter(new EmbedFooterBuilder().WithText("Pagina " + pageRepresentation + "/" + pageCount)); //10 Songs per page var i = arrayPage * 10; while (i < SongList.Count && i < ((arrayPage * 10) + 10)) { EmbedFieldBuilder embedField = new EmbedFieldBuilder(); YTSong cur = SongList[i]; if (SongList[i] == SongList[CurrentSongID]) { embedField.WithName("`#" + (i + 1) + " - Atual `") .WithIsInline(false) .WithValue("[" + cur.Title + "](" + cur.Url + ")\n\n`" + cur.RequestAuthor.Username + " | " + cur.Duration + "`"); } else { embedField.WithName("`#" + (i + 1) + "`") .WithIsInline(false) .WithValue("[" + cur.Title + "](" + cur.Url + ")\n\n`" + cur.RequestAuthor.Username + " | " + cur.Duration + "`"); } embedList.AddField(embedField); i++; } await MessageChannel.SendMessageAsync("", false, embedList); }
private void goToGameView(object obj) { if (LobbyViewModel != null) { LobbyViewModel.Dispose(); LobbyViewModel = null; } Task.Delay(500).ContinueWith(_ => { if (GameViewModel != null) { GameViewModel.Dispose(); GameViewModel = null; } GameViewModel = new GameViewModel((string)obj); App.Current.Dispatcher.Invoke(delegate { SubChannels.Remove(_subChannels.SingleOrDefault(i => i.id == (Constants.LOBBY_CHANNEL + Lobbyname))); MessageChannel gameChannel = new MessageChannel(Constants.GAME_CHANNEL, true, false); if (!SubChannels.Contains(gameChannel)) { SubChannels.Add(gameChannel); } ChangeChannel(Constants.GAME_CHANNEL); }); SwitchView = Views.Game; IsInGame = true; }); }
public async void ShowSongSkippedEmbed(int n) { if (CurrentSong() == null) { return; } DeleteCurMessage(); YTSong curSong = CurrentSong(); EmbedFieldBuilder songTitle = new EmbedFieldBuilder(); songTitle.WithName("** " + (PreviousSongID + 1) + " # --> " + (curSong.Order + 1) + " #**") .WithIsInline(false) .WithValue("`" + "¯\\_(ツ)_/¯" + "`"); var embedSkip = new EmbedBuilder() .WithColor(new Color(240, 230, 231)) .WithAuthor(author => { author.WithName("Pulando " + n + " músicas").WithIconUrl("https://cdn.discordapp.com/avatars/390402848443203595/d2831182eb4d3177febd28f44b4ec936.png?size=256"); }) .WithThumbnailUrl(curSong.DefaultThumbnailUrl); embedSkip.AddField(songTitle); var msg = await MessageChannel.SendMessageAsync("", false, embedSkip); await Task.Delay(12000); await msg.DeleteAsync(); }
public async void ShowSongSkippedEmbed(SocketUser usr) { if (CurrentSong() == null) { return; } DeleteCurMessage(); YTSong curSong = CurrentSong(); EmbedFieldBuilder songTitle = new EmbedFieldBuilder(); songTitle.WithName("--") .WithIsInline(false) .WithValue("`Cortesia de " + usr.Username + "`"); var embedSkip = new EmbedBuilder() .WithColor(new Color(240, 230, 231)) .WithAuthor(author => { author.WithName(" Pulando musiquinha lixo").WithIconUrl("https://cdn.discordapp.com/avatars/390402848443203595/d2831182eb4d3177febd28f44b4ec936.png?size=256"); }) .WithThumbnailUrl(curSong.DefaultThumbnailUrl); embedSkip.AddField(songTitle); var msg = await MessageChannel.SendMessageAsync("", false, embedSkip); await Task.Delay(12000); await msg.DeleteAsync(); }
public void SendMessage(byte[] data, NetDeliveryMethod method, MessageChannel channel) { var msg = m_Client.CreateMessage(); msg.Write(data); m_Client.SendMessage(msg, method, (int)channel); }
public ReceiverViewModel() { var exePath = System.Reflection.Assembly.GetExecutingAssembly().Location; var exeDir = System.IO.Path.GetDirectoryName(exePath); var runtimeOptions = new Openfin.Desktop.RuntimeOptions { UUID = "receiver-uuid", EnableRemoteDevTools = false, RemoteDevToolsPort = 9090, AssetsPath = exeDir + "\\Assets" }; var runtime = Openfin.Desktop.Runtime.GetRuntimeInstance(runtimeOptions); runtime.Error += (sender, e) => { Console.Write(e); }; runtime.Connect(() => { // Initialize the communication channel after the runtime has connected // but before launching any applications or EmbeddedViews dataMessageChannel = new MessageChannel(runtime.InterApplicationBus, "user-data"); dataMessageChannel.MessageReceived += DataMessageChannel_MessageReceived; }); }
//To get a single Message channel inside a server public async Task <GetMessageObject> GetMessageGroupAsync(string MessageKey) { MessageChannel message = await _Context.messageChannels.FindAsync(MessageKey); if (message == null) { return(new GetMessageObject { IsSuccess = false, Errors = new[] { "message channel does not exist" } }); } try{ //Get MessageGroupUsers Users IEnumerable <GroupMap> maps = _Context.GroupMaps.Select(val => val).Where(pre => pre.MessageChannelKey == MessageKey); List <string> UserkeyList = new List <string>(); foreach (GroupMap x in maps) { UserkeyList.Add(x.UserId); } return(new GetMessageObject() { IsSuccess = true, MessageKey = message.Key, name = message.Name, UserKeys = UserkeyList, }); }catch (Exception e) { return(new GetMessageObject { IsSuccess = false, Errors = new[] { e.Message } }); } }
public void SendChatAsync(string message, MessageChannel channel) { StarSonataCommClient.Client.SendMessage( new TextMessageOut(new ChatMessage { Channel = channel, Message = message })); }
public async Task Check_SimpleUdpConnection() { var testingPort1 = TestUtility.GetFreeTcpPort(); var testingPort2 = TestUtility.GetFreeTcpPort(); var receiveTaskOnPassiveChannel = new TaskCompletionSource <string>(); var receiveTaskOnActiveChannel = new TaskCompletionSource <string>(); // Define channels var passiveChannel = new MessageChannel( new UdpByteStreamHandlerSettings(testingPort1, IPAddress.Loopback, testingPort2), new DefaultMessageRecognizerSettings(Encoding.UTF8), (msg) => { receiveTaskOnPassiveChannel.SetResult(msg.ToString()); msg.ReturnToPool(); }); var activeChannel = new MessageChannel( new UdpByteStreamHandlerSettings(testingPort2, IPAddress.Loopback, testingPort1), new DefaultMessageRecognizerSettings(Encoding.UTF8), (msg) => { receiveTaskOnActiveChannel.SetResult(msg.ToString()); msg.ReturnToPool(); }); try { // Start both channels await Task.WhenAll( passiveChannel.StartAsync(), activeChannel.StartAsync()); // Wait for connection var timeoutTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(5.0)); await Task.WhenAll( passiveChannel.WaitForConnectionAsync(timeoutTokenSource.Token), activeChannel.WaitForConnectionAsync(timeoutTokenSource.Token)); Assert.AreEqual(ConnectionState.Connected, passiveChannel.State, $"Unable to connect on port {testingPort2}"); Assert.AreEqual(ConnectionState.Connected, activeChannel.State, $"Unable to connect on port {testingPort1}"); // Send/Receive some messages in both directions await passiveChannel.SendAsync("Message from passive endpoint"); await activeChannel.SendAsync("Message from active endpoint"); // Check for received messages var receivedOnPassiveChannel = await receiveTaskOnPassiveChannel.Task; var receivedOnActiveChannel = await receiveTaskOnActiveChannel.Task; Assert.IsTrue(receivedOnPassiveChannel == "Message from active endpoint"); Assert.IsTrue(receivedOnActiveChannel == "Message from passive endpoint"); } finally { await Task.WhenAll( passiveChannel.StopAsync(), activeChannel.StopAsync()); } }
protected Agent(bool unitTestContext) { MainThread.Initialize(); agentServer = new AgentServer(this); evaluationContextManager = new Lazy <EvaluationContextManager> (() => { MainThread.Ensure(); var host = CreateEvaluationContextManager(); host.Events.Subscribe(new Observer <ICodeCellEvent> (evnt => { switch (evnt) { case EvaluationInFlight _: break; default: MessageChannel.Push(evnt); break; } })); return(host); }); if (!unitTestContext) { RepresentationManager.AddProvider(new ReflectionRepresentationProvider()); } }
/// <summary> /// 启动消息客户端 /// </summary> /// <param name="config"></param> /// <param name="brokerIP">远程消息代理</param> /// <returns></returns> public static CFConfig RegisterMessageDispatcher(this CFConfig config, string brokerIP = null) { MessageService._default = !string.IsNullOrEmpty(brokerIP) ? new RemoteMessageDispatcher(Consumer.Connect(MessageChannel.ForProducer(brokerIP)), Producer.Connect(MessageChannel.ForConsumer(brokerIP))) : new LocalMessageDispatcher(); return(config); }
public override void InitializeService(INetContext context) { base.InitializeService(context); connectedUsers = new HashSet <NetUser>(); context.Packets.Register <P_Ping>(); ChPing = Router.Route <P_Ping>(); }
[Test] public void SimpleStringIsWritten() { var testSocket = new TestPort(); var socketStream = new MessageChannel(testSocket); socketStream.Write("hello"); Assert.AreEqual(new byte[] { 104, 101, 108, 108, 111 }, testSocket.GetBytes()); }
[Test] public void StringIsWrittenWithLengthPrefix() { var testSocket = new TestPort(); var socketStream = new MessageChannel(testSocket); socketStream.Write("h\u2019llo", "{0}:"); Assert.AreEqual(new byte[] { 55, 58, 104, 226, 128, 153, 108, 108, 111 }, testSocket.GetBytes()); }
[Test] public void EncodedStringIsRead() { var testSocket = new TestPort(); var socketStream = new MessageChannel(testSocket); testSocket.PutBytes(new byte[] { 104, 226, 128, 153, 108, 108, 111 }); Assert.AreEqual("h\u2019llo", socketStream.Read(7)); }
/// <summary> /// Handles the Removed event of the DistributedMemoryManagerCache control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="KeyCacheEventArgs{TKey}" /> instance containing the event data.</param> protected override void DistributedMemoryManagerCache_Removed(object sender, KeyCacheEventArgs <long> e) { var message = new FieldEntityCacheMessage( ); message.RemoveKeys.Add(e.Key); MessageChannel.Publish(message, PublishOptions.None, false, MergeMessages); }
[Test] public void SimpleStringIsRead() { var testSocket = new TestPort(); var socketStream = new MessageChannel(testSocket); testSocket.PutBytes(new byte[] { 104, 101, 108, 108, 111 }); Assert.AreEqual("hello", socketStream.Read(5)); }
public MessageReceivedEvent(DateTime timestamp, string from, MessageSource source, bool player, MessageChannel channel, string message) : base(timestamp, NAME) { this.from = from; Source = source; this.player = player; Channel = channel; this.message = message; }
public void IsSubscribed_Returns_True_If_Subscriber_Is_Subscribed() { var messageChannel = new MessageChannel(); var subscriber = messageChannel.Subscribe <string>(); Assert.True(messageChannel.IsSubscribed(subscriber)); }
public void IsSubscribed_Returns_False_If_Subscribers_MessageType_IsNull() { var mockSubscriber = new Mock <ISubscriber>(); var messageChannel = new MessageChannel(); Assert.False(messageChannel.IsSubscribed(mockSubscriber.Object)); }
/// <summary> /// Initializes a new instance of the <see cref="MmoRadar"/> class. /// </summary> public MmoRadar() { this.fiber = new PoolFiber(); this.fiber.Start(); this.channel = new MessageChannel<ItemEventMessage>(ItemEventMessage.CounterEventSend); this.itemPositions = new Dictionary<Item, float[]>(); this.itemSubscriptions = new Dictionary<Item, IDisposable>(); this.actionQueue = new ActionQueue(this, this.fiber); }
[Test] public void StringIsReadInMultipleParts() { var testSocket = new TestPort(); var socketStream = new MessageChannel(testSocket); testSocket.PutBytes(new byte[] { 104, 101, 108, 108, 111 }); testSocket.PutBytes(new byte[] { 32, 119, 111, 114, 108, 100 }); Assert.AreEqual("hello world", socketStream.Read(11)); }
public Radar() { this.fiber = new PoolFiber(); this.fiber.Start(); this.channel = new MessageChannel <ItemEventMessage>(ItemEventMessage.CounterEventSend); this.itemPositions = new Dictionary <Item, Vector>(); this.itemSubscriptions = new Dictionary <Item, IDisposable>(); this.actionQueue = new ActionQueue(this, this.fiber); }
/// <summary> /// Handles the Cleared event of the DistributedMemoryManagerCache control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="CacheEventArgs" /> instance containing the event data.</param> protected override void DistributedMemoryManagerCache_Cleared(object sender, CacheEventArgs e) { var message = new FieldEntityCacheMessage { Clear = true }; MessageChannel.Publish(message, PublishOptions.None, false, MergeMessages); }
private void UpdateUnsubChannel(JObject channelMes) { MessageChannel newChannel = new MessageChannel(channelMes.GetValue("id").ToString(), false, false); App.Current.Dispatcher.Invoke(delegate { _notSubChannels.Add(newChannel); }); }
public async Task Check_SerialConnection_Send() { var encoding = Encoding.UTF8; // Fake serial port api and listen for Write calls var receivedString = string.Empty; SerialPortByteStreamHandler.SerialPortFactory = () => { var isOpened = false; var fakedSerialPort = A.Fake <ISerialPort>(); A.CallTo(() => fakedSerialPort.IsOpen).ReturnsLazily(call => isOpened); A.CallTo(() => fakedSerialPort.Open()).Invokes(call => isOpened = true); A.CallTo(() => fakedSerialPort.Close()).Invokes(call => isOpened = false); A.CallTo(fakedSerialPort) .Where(call => call.Method.Name == nameof(ISerialPort.Write)) .Invokes(call => { var buffer = (byte[])call.Arguments[0] !; var offset = (int)call.Arguments[1] !; var count = (int)call.Arguments[2] !; receivedString = encoding.GetString(buffer, offset, count); }); return(fakedSerialPort); }; // Define channels var serialChannel = new MessageChannel( new SerialPortByteStreamHandlerSettings("COM1"), new StartAndEndSymbolsRecognizerSettings(encoding, "<", ">")); try { // Start both channels await serialChannel.StartAsync(); // Wait for connection var timeoutTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(5.0)); await serialChannel.WaitForConnectionAsync(timeoutTokenSource.Token); Assert.AreEqual(serialChannel.State, ConnectionState.Connected); // Send/Receive some messages in both directions await serialChannel.SendAsync("Message sent through serial channel"); // Check for written message Assert.AreEqual(receivedString, "<Message sent through serial channel>"); } finally { await serialChannel.StopAsync(); } }
public void IsSubscribed_Returns_False_If_Subscriber_IsNot_Subscribed() { var mockSubscriber = new Mock <ISubscriber>(); mockSubscriber.SetupGet(x => x.MessageType).Returns(typeof(string)); var messageChannel = new MessageChannel(); Assert.False(messageChannel.IsSubscribed(mockSubscriber.Object)); }
/// <summary> /// Stops Listening to a given channel /// </summary> /// <param name="channelToListen">Channel to stop listening to</param> public void StopChannelListening(MessageChannel channelToListen) { if (_registeredChannelConsumers.ContainsKey(channelToListen)) { _channel.BasicCancel(_registeredChannelConsumers[channelToListen].ConsumerTag); _registeredChannelConsumers.Remove(channelToListen); } else { throw new Exception("No Channel Listener Consumer registered!"); } }
private async void UnsubChannel(object id) { string channelId = (string)id; string requestPath = Constants.SERVER_PATH + Constants.LEAVE_CHANNEL_PATH + "/" + ServerService.instance.username + "/" + channelId; try { var response = await ServerService.instance.client.DeleteAsync(requestPath); if (!response.IsSuccessStatusCode) { var message = await response.Content.ReadAsStringAsync(); ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message); ShowMessageBox(serverMessage.message); return; } JObject responseJson = JObject.Parse(await response.Content.ReadAsStringAsync()); if (!(responseJson.ContainsKey("status") && responseJson.ContainsKey("message"))) { ShowMessageBox("Error parsing server response"); return; } if (responseJson.GetValue("status").ToString() == "200") { if (_selectedChannel.ID == channelId) { ChangeChannel(Constants.DEFAULT_CHANNEL); } MessageChannel leftChannel = new MessageChannel(channelId, false, false); _subChannels.Remove(_subChannels.SingleOrDefault(i => i.id == channelId)); await Application.Current.Dispatcher.Invoke(async delegate { NotSubChannels.Clear(); var notSubChannelReq = await ServerService.instance.client.GetAsync(Constants.SERVER_PATH + Constants.NOT_SUB_CHANNELS_PATH + "/" + ServerService.instance.username); ProcessChannelRequest(notSubChannelReq, NotSubChannels, false); }); } else { ShowMessageBox(responseJson.GetValue("message").ToString()); } } catch (Exception e) { ShowMessageBox(e.Message); } }
public Item(Vector position, Hashtable properties, string id, byte type, MmoWorld world) { this.Position = position; this.eventChannel = new MessageChannel<ItemEventMessage>(ItemEventMessage.CounterEventSend); this.disposeChannel = new MessageChannel<ItemDisposedMessage>(MessageCounters.CounterSend); this.positionUpdateChannel = new MessageChannel<ItemPositionMessage>(MessageCounters.CounterSend); this.properties = properties ?? new Hashtable(); if (properties != null) { this.PropertiesRevision++; } this.id = id; this.world = world; this.type = type; }
public void postChat(MessageChannel channel,string content) { // 向服务器请求的代码 if (channel == MessageChannel.ChannelPrivate || channel == MessageChannel.ChannelWorld || channel == MessageChannel.ChannelGuild) { Protocol.C2SChatMessageReq chatRequest = new Protocol.C2SChatMessageReq(); chatRequest.chat_type = (int)channel; if (channel == MessageChannel.ChannelPrivate) { chatRequest.chat_target_guid = 439715978; // > Debug } chatRequest.chat_content = Encoding.UTF8.GetBytes(content); NetworkEvent.sendPacket<Protocol.C2SChatMessageReq>(chatRequest); } else { writeLine(MessageChannel.ChannelSystem, "错误", SystemUid, "信息“" + content + "”发送失败!" ); } }
public void writeLine(MessageChannel channel, string uname, UInt64 from_uid, string content) { wb.Document.InvokeScript("addChatMessage", new Object[] { (int)channel, from_uid, uname, content }); }
static void Main(string[] args) { log4net.Config.BasicConfigurator.Configure(); Tracer.Initialize(new TracerManager()); AppDomain.CurrentDomain.UnhandledException += (s, e) => tracer.Error(e.ExceptionObject); TaskScheduler.UnobservedTaskException += (s, e) => tracer.Error(e.Exception); try { short port = 1055; if (args.Length > 0) port = short.Parse(args[0]); ServiceRegistration.Start(port); var devices = new DeviceRegistry(); var topics = new Dictionary<string, TopicType>(); var stream = new EventStream(); var state = new SystemState(); var impulseStore = new FileImpulseStore("Store\\Impulses"); var commandStore = new FileCommandStore("Store\\Commands"); SetupTracing(stream); // Hook up event stream consumers that perform orthogonal operations. new ClockImpulses(Clock.Default).Connect(stream); new CommandToBytes().Connect(stream); new SensedToImpulse(Sensorium.Clock.Default, topics).Connect(stream); new SetSystemState(state).Connect(stream); // Hook up stores new StoreCommands(commandStore).Connect(stream); new StoreImpulses(impulseStore).Connect(stream); var brain = new Brain(stream, devices, topics, state, Clock.Default); if (File.Exists("Server.cfg")) { var setup = Setup.Read("Server.cfg", File.ReadAllText("Server.cfg")); Console.WriteLine("Applying configuration file:"); Console.WriteLine(setup.ToString(true)); foreach (var topic in setup.Topics) { topics[topic.Key] = topic.Value; } foreach (var device in setup.DeviceTypes) { devices.Register(device.Type, device.Commands.ToArray()); } foreach (var behavior in setup.Behaviors) { brain.Behave(behavior); } } var server = new ReactiveListener(port); server.Connections.Subscribe(socket => { Console.WriteLine("New socket connected {0}", socket.GetHashCode()); var binary = new BinaryChannel(socket); var message = new MessageChannel(binary); var device = new TcpDevice(brain, message, Clock.Default); connectedDevices.Add(device); device.Disconnected += (sender, e) => socket.Dispose(); socket.Disconnected += (sender, e) => { Console.WriteLine("Socket disconnected {0}", sender.GetHashCode()); connectedDevices.Remove(device); device.Dispose(); }; socket.Disposed += (sender, e) => { Console.WriteLine("Socket disposed {0}", sender.GetHashCode()); connectedDevices.Remove(device); device.Dispose(); }; }); server.Start(); Console.WriteLine("Define topic:"); Console.WriteLine(" topic [void|bool|number|string] [name]"); Console.WriteLine("Define device:"); Console.WriteLine(" device [type] [comma-separated list of topic commands the device can receive]"); Console.WriteLine("Define behavior:"); Console.WriteLine(" behave [when then expression]"); Console.WriteLine("Press Enter to exit"); string line = null; while ((line = Console.ReadLine()) != "") { if (line == Environment.NewLine) return; if (line.StartsWith("topic")) { var topic = TopicParser.Parse(line); topics[topic.Item1] = topic.Item2; Console.WriteLine("Registered topic '{0}' of type {1}", topic.Item1, topic.Item2); } else if (line.StartsWith("device")) { var device = DeviceParser.Parse(line); devices.Register(device.Item1, device.Item2.ToArray()); Console.WriteLine("Registered device type '{0}' to receive commands {1}", device.Item1, string.Join(", ", device.Item2.Select(s => "'" + s + "'"))); } else if (line.StartsWith("behave ")) { try { brain.Behave(line.Substring(7)); } catch (Exception e) { Console.WriteLine(e.Message); } } } } catch (Exception e) { Console.WriteLine("Failed: {0}", e); } }
public virtual void Send(NetworkOutMessage msg, MessagePriority priority, MessageReliability reliability, MessageChannel channel, bool releaseMessage) { SharingClientPINVOKE.NetworkConnection_Send__SWIG_0(swigCPtr, NetworkOutMessage.getCPtr(msg), (int)priority, (int)reliability, (int)channel, releaseMessage); }
/// <summary>Maps the filterable channel messages to the proper filter.</summary> internal static MessageFilter GetChannelMessageFilter(MessageChannel mc) { switch (mc) { case MessageChannel.Guild: return MessageFilter.GuildChat; case MessageChannel.Group: return MessageFilter.GroupChat; case MessageChannel.Shout: return MessageFilter.Shout; case MessageChannel.Auction: return MessageFilter.Auction; case MessageChannel.OOC: return MessageFilter.OOC; default: return MessageFilter.None; } }
static void Main(string[] args) { log4net.Config.BasicConfigurator.Configure(); Tracer.Initialize(new TracerManager()); AppDomain.CurrentDomain.UnhandledException += (s, e) => Tracer.Get<Client>().Error(e.ExceptionObject); TaskScheduler.UnobservedTaskException += (s, e) => Tracer.Get<Client>().Error(e.Exception); try { var ipPort = ServiceDiscovery.DiscoverBroker(); var host = ipPort.Ip; var port = ipPort.Port; //var host = "localhost"; //var port = 1055; //if (args.Length > 0) // host = args[0]; //if (args.Length > 1) // port = int.Parse(args[1]); var client = new ReactiveClient(host, port); var binary = new BinaryChannel(client); var channel = new MessageChannel(binary); channel.Receiver.SubscribeOn(TaskPoolScheduler.Default).Subscribe( s => { Console.WriteLine("Received: {0}", s); // Report state change immediately. var topic = s as Topic; if (topic != null) { Console.WriteLine("Sending back to cause state change: {0}", topic); channel.SendAsync(topic); } }, e => Console.WriteLine(e), () => Console.WriteLine("Socket receiver completed")); Console.WriteLine("To connect, enter: connect [device id] [device type]"); Console.WriteLine("To send message once connected: [topic] = [value], where [value] can be:"); Console.WriteLine(" * a boolean (words 'true' or 'false' without quotes)"); Console.WriteLine(" * a number (a numberic value followed by the suffic 'f' denoting a floating point number)"); Console.WriteLine(" * a string (without quotes)"); Console.WriteLine("If no value is provided after the topic, then it's assumed to be a void topic (no payload needed)"); string line = null; while ((line = Console.ReadLine()) != "") { if (line.StartsWith("connect ")) { var connectInfo = line.Substring(8).Split(' '); var deviceId = connectInfo[0]; var deviceType = connectInfo[1]; Console.WriteLine("Connecting..."); try { client.ConnectAsync().Wait(); channel.SendAsync(new Connect(deviceId, deviceType)).Wait(); Console.WriteLine("Connected!"); } catch (Exception e) { Console.WriteLine("Failed to connect: {0}", e); } } else if (line == "disconnect") { if (client.IsConnected) { Console.WriteLine("Disconnecting..."); try { channel.SendAsync(new Disconnect()).Wait(); client.Disconnect(); Console.WriteLine("Disconnected!"); } catch (Exception e) { Console.WriteLine("Failed to disconnect: {0}", e); } } else { Console.WriteLine("Client was already disconnected."); } } else if (line == "r") { Console.WriteLine("Reconnecting..."); client.Disconnect(); client.ConnectAsync().Wait(); Console.WriteLine("IsConnected = {0}. Re-send Connect message.", client.IsConnected); } else { Console.WriteLine("Sending..."); if (line.IndexOf('=') == -1) { channel.SendAsync(new Topic(line.Trim())); } else { var parts = line.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries) .Select(s => s.Trim()).ToArray(); if (parts[1].Equals("true", StringComparison.OrdinalIgnoreCase)) channel.SendAsync(new Topic(parts[0], Payload.ToBytes(true))); else if (parts[1].Equals("false", StringComparison.OrdinalIgnoreCase)) channel.SendAsync(new Topic(parts[0], Payload.ToBytes(false))); else if (parts[1].EndsWith("f")) channel.SendAsync(new Topic(parts[0], Payload.ToBytes(float.Parse(parts[1].Substring(0, parts[1].Length - 1))))); else channel.SendAsync(new Topic(parts[0], Payload.ToBytes(parts[1]))); } } } } catch (Exception e) { Console.WriteLine("Failed: {0}", e); } }
public virtual void Broadcast(NetworkOutMessage msg, MessagePriority priority, MessageReliability reliability, MessageChannel channel) { SharingClientPINVOKE.NetworkConnection_Broadcast__SWIG_1(swigCPtr, NetworkOutMessage.getCPtr(msg), (int)priority, (int)reliability, (int)channel); }
public virtual void SendTo(User user, ClientRole deviceRole, NetworkOutMessage msg, MessagePriority priority, MessageReliability reliability, MessageChannel channel) { SharingClientPINVOKE.NetworkConnection_SendTo__SWIG_1(swigCPtr, User.getCPtr(user), (int)deviceRole, NetworkOutMessage.getCPtr(msg), (int)priority, (int)reliability, (int)channel); }
/// <summary>Sends a communication message (tell, say, etc.) to the player. Since we are sending this player the message, it is the listener.</summary> /// <param name="fromName">An optionally blank speaker's name.</param> /// <param name="toName">An optionally blank target's name.</param> /// <remarks>Messages should already be scrubbed for validity (GM messages intended only for GMs, etc.)</remarks> internal void SendChannelMessage(string fromName, string toName, MessageChannel chan, Language lang, int langSkill, string message) { ChannelMessage cm = new ChannelMessage(); cm.ChannelId = (int)chan; cm.Message = message; cm.SpeakerName = string.IsNullOrEmpty(fromName) ? "ZServer" : fromName; // Why 'ZServer'? // Looks like even though we know who the message is intended for, the target field can be blank if (!string.IsNullOrEmpty(toName)) cm.TargetName = toName; else if (chan == MessageChannel.Tell) cm.TargetName = this.Name; int listenerSkill; if ((int)lang < Character.MAX_LANGUAGE) { // Is the language being spoken within the allowable range listenerSkill = this.PlayerProfile.Languages[(int)lang]; cm.LanguageId = (int)lang; if (chan == MessageChannel.Group && listenerSkill < 100) { // group messages in unmastered languages, check for skill up if ((this.PlayerProfile.Languages[(int)lang] <= langSkill) && fromName != this.Name) CheckForSkillUp(lang, langSkill); } } else { // Not in allowable range, assume common tongue listenerSkill = this.PlayerProfile.Languages[(int)Language.CommonTongue]; cm.LanguageId = (int)Language.CommonTongue; } // Set effective language skill = lower of sender and receiver skills int effSkill = Math.Min(langSkill, listenerSkill); effSkill = Math.Min(effSkill, 100); // Cap at 100 cm.LanguageSkill = effSkill; EQRawApplicationPacket cmPack = new EQRawApplicationPacket(AppOpCode.ZonePlayerToBind, this.Client.IPEndPoint, cm.Serialize()); this.Client.SendApplicationPacket(cmPack); }
public static void CheckTriggers( Player player, String Message, MessageChannel Channel ) { //Check swears in PMs if ( Channel == MessageChannel.PM ) { if ( File.Exists( "SwearWords.txt" ) && Settings.AnnounceWarnSwear ) { if ( !player.Can( Permission.Swear ) ) { if ( Triggers.MatchesTrigger( Message, MaintenanceTriggers.SwearFullTrigger ) ) { Methods.SendMessage( player, Color.PM + "Please refrain from swearing :)", MessageChannel.PM ); return; } } } } if ( Channel == MessageChannel.PM ) return; //ignore PMs for this //What is my next rank? if ( Triggers.MatchesTrigger( Message, RankTriggers.NextRankFullTrigger ) && Settings.AnnounceRank ) { if ( player.Info.Rank != RankManager.HighestRank ) { Methods.SendMessage( player.ClassyName + "&F, your next rank is " + player.Info.Rank.NextRankUp.ClassyName, Channel ); Methods.AddTYPlayer( player ); } else { Methods.SendMessage( player.ClassyName + "&F, you are already the highest rank!", Channel ); Methods.AddTYPlayer( player ); } return; } //Caps checker if ( IsAllUpper( Message ) && Settings.AnnounceCaps ) { Methods.SendPM( player, "Please refrain from abusing caps." ); } //How do I get the next rank? if ( Triggers.MatchesTrigger( Message, RankTriggers.HowDoFullTrigger ) && Settings.AnnounceRank ) { if (player.Info.Rank == RankManager.HighestRank) { Methods.SendMessage(player.ClassyName + "&F, you are already the highest rank!", Channel); Methods.AddTYPlayer(player); return; } if (player.Can(Permission.ReadStaffChat)) { Methods.SendMessage( player.ClassyName + "&f, " + Settings.HowToGetRankedStaffString, Channel ); Methods.AddTYPlayer( player ); } else { Methods.SendMessage( player.ClassyName + "&f, " + Settings.HowToGetRankedBuilderString, Channel ); Methods.AddTYPlayer( player ); } return; } //I was demoted if ( Triggers.MatchesTrigger( Message, RankTriggers.DemotedFullTrigger ) && Settings.AnnounceDemoted ) { Methods.SendMessage( player.ClassyName + "&F, if you were wrongfully demoted you can appeal at " + Settings.Website, Channel ); Methods.AddTYPlayer( player ); return; } //How do I PM players? if ( Triggers.MatchesTrigger( Message, MaintenanceTriggers.PMFullTrigger ) && Settings.AnnouncePM ) { Methods.SendMessage( player.ClassyName + "&f, to PM, type '@playername [message]'.", Channel ); Methods.AddTYPlayer( player ); return; } //What is the time if ( Triggers.MatchesTrigger( Message, MaintenanceTriggers.TimeFullTrigger ) && Settings.AnnounceTime ) { Methods.SendMessage( player.ClassyName + "&f, the server's time is currently " + DateTime.Now.ToShortTimeString(), Channel ); Methods.AddTYPlayer( player ); return; } //I fell if ( Triggers.MatchesTrigger( Message, MaintenanceTriggers.FellFullTrigger ) && Settings.AnnounceFell ) { Methods.SendMessage( player.ClassyName + Settings.StuckMessage, Channel ); Methods.AddTYPlayer( player ); return; } //What are my hours? if ( Triggers.MatchesTrigger( Message, MaintenanceTriggers.HoursFullTrigger ) && Settings.AnnounceHours ) { Methods.SendMessage( Methods.GetPlayerTotalHoursString( player ), Channel ); Methods.AddTYPlayer( player ); return; } //What is the website? if ( Triggers.MatchesTrigger( Message, MaintenanceTriggers.WebFullTrigger ) ) { Methods.SendMessage( player.ClassyName + "&F, the server's website is " + Settings.Website, Channel ); Methods.AddTYPlayer( player ); return; } //What is the server's name? if ( Triggers.MatchesTrigger( Message, MaintenanceTriggers.ServFullTrigger ) && Settings.AnnounceServerName ) { Methods.SendMessage( player.ClassyName + "&F, you are currently playing on " + ConfigKey.ServerName.GetString(), Channel ); Methods.AddTYPlayer( player ); return; } //!Spleef if ( Triggers.MatchesTrigger( Message, MiscTriggers.SpleefFullTrigger ) && Settings.AnnounceSpleefTimer ) { if ( SpleefInProgress ) { Methods.SendPM( player, "There is already a spleef timer!" ); return; } try { Thread t = new Thread( new ThreadStart( delegate { SpleefInProgress = true; for ( int i = 3; i >= 1; i-- ) { Thread.Sleep( 1000 ); Methods.SendChat( i.ToString() ); } Thread.Sleep( 1000 ); Methods.SendChat( "&WSPLEEF!" ); SpleefInProgress = false; } ) ); t.Start(); } catch { SpleefInProgress = false; } return; } //Alice, Joke if ( Triggers.MatchesNameAndTrigger( Message, MiscTriggers.JokeFullTrigger ) && Settings.AnnounceJokes ) { Methods.SendMessage( Methods.GetRandomJoke(), MessageChannel.Global ); return; } //how do I fly? Using CM now since Java 7 is such a pain if ( Triggers.MatchesTrigger( Message, MiscTriggers.FlyFullTrigger ) && Settings.AnnounceFly ) { Methods.SendMessage( player.ClassyName + "&F, to fly, type /fly, or download ClassiCube at http://Classicube.net.", MessageChannel.Global ); Methods.AddTYPlayer( player ); return; } //fun fact if ( Triggers.MatchesNameAndTrigger( Message, MiscTriggers.FunFactFullTrigger ) && Settings.AnnounceJokes ) { Methods.SendMessage( Methods.GetRandomStatString( player ), Channel ); return; } //Thanks checking if ( Triggers.MessageIsTrigger( Message, MiscTriggers.ThanksFullTrigger ) ) { lock ( Values.AwaitingThanks ) { foreach ( Values.TYObject _O in Values.AwaitingThanks ) { if ( _O.player == player ) { double totalTime = ( DateTime.Now - _O.Time ).TotalSeconds; if ( totalTime <= 20 ) { Methods.SendMessage( Values.ThankyouReplies[new Random().Next( 0, Values.ThankyouReplies.Length )], MessageChannel.Global ); } } } Methods.RemoveTYPlayer( player ); } } }