// Use this for initialization void Start() { Debuger.EnableLog = true; GameCommon.GAME_INIT = true; gameHeart = new GameObject("GameHeart"); gameHeart.AddComponent <DontDestroyObj>(); //初始化数据存储系统 UserDataManager.instance.Start(); //初始化事件管理器 EventManager em = gameHeart.AddComponent <EventManager>(); //声音管理器 AudioManager am = gameHeart.AddComponent <AudioManager>(); //加载联网脚本 HttpConnection hc = gameHeart.AddComponent <HttpConnection>(); //初始化场景管理器 GameSceneManager gsm = gameHeart.AddComponent <GameSceneManager>(); //消息管理 HandleMessage hm = gameHeart.AddComponent <HandleMessage>(); gameHeart.AddComponent <ShowFPS>(); ConfigManager.LoadData(); (new EventChangeScene(GameSceneManager.SceneTag.Logo)).Send(); PlayerPrefs.SetInt(GameConst.USERDATANAME_SEL_ROLE, 0); }
public Client(MonoGame gm, HandleMessage msgHandler) { game = gm; config = new NetPeerConfiguration("Client"); client = new NetClient(config); messageHandler = msgHandler; }
public Bot(Manager botManager, LoginInfo loginInfo, Config config, AsynchronousSocketListener socket) { this.socket = socket; this.config = config; this.loginInfo = loginInfo; this.botManager = botManager; steamClient = new SteamClient(); messageHandler = new HandleMessage(); steamWeb = new SteamTrade.SteamWeb(); manager = new CallbackManager(steamClient); steamchatHandler = new HandleSteamChat(this); MyGenericInventory = new GenericInventory(steamWeb); steamCallbackManager = new CallbackManager(steamClient); this.socket.MessageReceived += Socket_MessageReceived; DB = new Database(config.DatabaseServer, config.DatabaseUser, config.DatabasePassword, config.DatabaseName, config.DatabasePort); DB.InitialiseDatabase(); botThread = new BackgroundWorker { WorkerSupportsCancellation = true }; botThread.DoWork += BackgroundWorkerOnDoWork; botThread.RunWorkerCompleted += BackgroundWorkerOnRunWorkerCompleted; System.Timers.Timer refreshMarket = new System.Timers.Timer(421000);//15*1000*60); refreshMarket.Elapsed += UpdateMarketItems; refreshMarket.AutoReset = true; refreshMarket.Enabled = true; }
async public Task <HandleMessage> DoUnAccound(DateTime xExeDate) { if (_BeginDate >= xExeDate) { return(HandleMessage.CreateFail(string.Format("回帳失敗, 執行日期必須大於 {0}", _BeginDate.ToString("yyyy/MM/dd")))); } var xCashFlow = LookupCashFlow().Where(w => w.TradeDate >= xExeDate).ToList(); var xCommodityMast = LookupCommodityMast().Where(w => w.TradeDate >= xExeDate).ToList(); if (xCashFlow.IsEmpty() && xCommodityMast.IsEmpty()) { return(HandleMessage.CreateFail("回帳失敗, 無現金流資料")); } foreach (var item in xCashFlow) { _Entity.Entry(item).State = EntityState.Deleted; } foreach (var item in xCommodityMast) { _Entity.Entry(item).State = EntityState.Deleted; } bool success = await _Entity.SaveChangesAsync() > 0; return(HandleMessage.Create(success, "回帳成功", "回帳失敗")); }
public void Test_MessageReceival_Valid() { bool messageReceived = false; string subtype = "example-message"; var msg = new Message(); msg.Header = new Header(); msg.Header.MessageID = Guid.NewGuid(); msg.Header.Subtype = subtype; HandleMessage handler = delegate(Message rMsg) { Assert.AreEqual(msg.Header.Subtype, rMsg.Header.Subtype); Assert.AreEqual(msg.Header.MessageID, rMsg.Header.MessageID); messageReceived = true; }; var repo = new MessageHandlerRepository(); repo.RegisterHandler(handler, subtype); var messageListener = new MessageListenerService(repo); string messageData = new JSONSerializer().Serialize(msg); messageListener.ProcessMessage(messageData); Assert.IsTrue(messageReceived); }
private void listen(MQQueue queue, MQQueueManager manager, string queueName, HandleMessage handler, OfacStatus status) { while (!pendingStop) { while (!pendingStop && currentMessagesToBeProcessed >= maxNoOfMessagesToProcess) { Thread.Sleep(5000); } if (pendingStop) { return; } try { MQMessage message = getMessage(queue); if (message == null) { continue; } handler(message, status); manager.Commit(); } catch (MQException e) { LogUtil.log("Error when getting message from the " + queueName + " queue", e); manager.Backout(); Thread.Sleep(30000); throw; } } }
/// <summary> /// 构造方法 /// </summary> /// <param name="date"></param> /// <param name="msgHandler"></param> public Dispatcher(DateTime date, HandleMessage msgHandler) { tradeDate = date; StateRecords = new LogFile(date); this.msgHandler = msgHandler; init(); }
public void Start(HandleMessage handleMessage) { _handleMessage = handleMessage; CreateNamedPipeServerStream(); _running = true; _pipeServer.BeginWaitForConnection(WaitForConnectionCallback, _pipeServer); }
public static void RemoveListener(Type messageType, HandleMessage handler) { lock(eventTable) { if(eventTable.ContainsKey(messageType)) { eventTable[messageType] = (HandleMessage)eventTable[messageType] - handler; } } }
public static void AddListener(Type messageType, HandleMessage handler) { lock(eventTable) { if(!eventTable.ContainsKey(messageType)) { eventTable.Add(messageType,null); } eventTable[messageType] = (HandleMessage)eventTable[messageType] + handler; } }
/// <summary> /// Send a get message to the uri and pass the response message to the handle message method /// </summary> /// <param name="uri"></param> /// <param name="handleMessage"></param> public static async Task GetAsync(string uri, HandleMessage handleMessage) { var httpClient = new HttpClient(); var httpUri = new Uri(uri); var responseMessage = await httpClient.GetStringAsync(httpUri); handleMessage(JsonConvert.DeserializeObject(responseMessage)); }
public void Start() { Listener.Bind("tcp://*:" + ListenPort, out var connectError); if (connectError != null) { Console.WriteLine($"Connection error: {connectError.Name} - {connectError.Number} - {connectError.Text}"); } runningThread = new Thread(new ThreadStart(() => { Running = true; while (Active) { try { var message = Listener.ReceiveMessage(out var error); if (error == null) { if (message != null && message.Count > 0) { try { if (HandleMessage != null) { var responseMessage = HandleMessage?.Invoke(message[0].ReadString()); using (ZMessage reponse = new ZMessage()) { reponse.Add(new ZFrame(responseMessage)); Listener.Send(reponse); } } else { Console.WriteLine("ZeroMQP2PListener: MessageHandler not defined"); } } catch (Exception err) { Console.WriteLine("Failed to Receive P2P Message -> " + err.ToString()); } } } } catch (Exception err) { Console.WriteLine("MessageListener failed -> " + err.ToString()); } Thread.Sleep(10); } Running = false; })); runningThread.Start(); }
public void RegisterHandler(HandleMessage callback, params string[] messageTypes) { if (!IsListenerConfigured()) { throw new ArgumentException("Listener is not configured in the message section of BOp SDK"); } foreach (string type in messageTypes) { _messageHandlers.Add(type, callback); } }
override protected void HandleReceivedMessage(Message message) { base.HandleReceivedMessage(message); Message response = null; switch (message.Type) { case MessageType.TRACE: _tracing2Client = true; HandleMessage?.Invoke(this, message); break; case MessageType.PING: response = CreatePingResponse(message); SendMessage(response); break; case MessageType.STATUS_REQUEST: response = CreateStatusResponse(message); SendMessage(response); break; case MessageType.SUBSCRIBE: if (message.HasValue("Subscriber")) { try { AddSubscriber(ConnectionManager.Subscriber.Parse(message.GetString("Subscriber"))); } catch (Exception e) { Tracing?.TraceEvent(TraceEventType.Error, 2000, e.Message); } } break; case MessageType.UNSUBSCRIBE: if (message.HasValue("Subscriber")) { RemoveSubscriber(message.GetString("Subscriber")); } break; default: int priorSize = ThreadExecutionManager.MaxQueueSize; ThreadExecutionManager.MaxQueueSize = 256; ThreadExecutionManager.Execute <Message>("HandleMessage-" + ID, HandleMessageDelegateWrapper, message); ThreadExecutionManager.MaxQueueSize = priorSize; break; } }
/// <summary> /// Initializes a new instance of the <see cref="MessageQueueReceive" /> class. /// </summary> /// <param name="cancelWork">The cancel work.</param> /// <param name="handleMessage">The handle message.</param> /// <param name="receiveMessages">The receive messages.</param> public MessageQueueReceive( IQueueCancelWork cancelWork, HandleMessage handleMessage, ReceiveMessage receiveMessages) { Guard.NotNull(() => cancelWork, cancelWork); Guard.NotNull(() => handleMessage, handleMessage); Guard.NotNull(() => receiveMessages, receiveMessages); _cancelWork = cancelWork; _handleMessage = handleMessage; _receiveMessages = receiveMessages; }
public Test() { InitializeComponent(); RunConsole(); bot = new Botnana("192.168.7.2"); onWSOpen = new HandleMessage((IntPtr dataPtr, string str) => { webSocketState = 2; BeginInvoke(new Deg(() => { sdoControl1.Awake(); driveControl1.Awake(); axisControl1.Awake(); })); Console.WriteLine("WS connected."); }); bot.SetOnOpenCB(IntPtr.Zero, onWSOpen); onWSError = new HandleMessage((IntPtr dataPtr, string str) => { webSocketState = 0; BeginInvoke(new Deg(() => { sdoControl1.Sleep(); driveControl1.Sleep(); axisControl1.Sleep(); })); Console.WriteLine("WS error : " + str); }); bot.SetOnErrorCB(IntPtr.Zero, onWSError); onMessage = new HandleMessage((IntPtr dataPtr, string str) => { Console.WriteLine("OnMessage : " + str); }); bot.SetOnMessageCB(IntPtr.Zero, onMessage); onErrorMessage = new HandleMessage((IntPtr dataPtr, string str) => { Console.WriteLine("Error|" + str); }); bot.SetTagCB(@"error", 0, IntPtr.Zero, onErrorMessage); sdoControl1.InitializeBotnana(bot); axisControl1.InitializeBotnana(bot); realTimeScriptControl1.InitializeBotnana(bot); driveControl1.InitializeBotnana(bot); }
private void Form1_Load(object sender, EventArgs e) { bot = new Botnana("192.168.7.2"); onWsErrorCallback = new HandleMessage(OnWsErrorCB); bot.SetOnErrorCB(IntPtr.Zero, onWsErrorCallback); onMessageCallback = new HandleMessage(HandleMessageCB); bot.SetOnMessageCB(IntPtr.Zero, onMessageCallback); slavesRespondingCallback = new HandleMessage(SlavesRespondingCB); bot.SetTagCB("slaves_responding", 0, IntPtr.Zero, slavesRespondingCallback); statusWordCallback = new HandleMessage(StatusWordCB); bot.SetTagCB("status_word.1.1", 0, IntPtr.Zero, statusWordCallback); realPositionCallback = new HandleMessage(RealPositionCB); bot.SetTagCB("real_position.1.1", 0, IntPtr.Zero, realPositionCallback); targetPositionCallback = new HandleMessage(TargetPositionCB); bot.SetTagCB("target_position.1.1", 0, IntPtr.Zero, targetPositionCallback); opModeCallback = new HandleMessage(OpModeCB); bot.SetTagCB("operation_mode.1.1", 0, IntPtr.Zero, opModeCallback); digitalInputsCallback = new HandleMessage(DigitalInputsCB); bot.SetTagCB("digital_inputs.1.1", 0, IntPtr.Zero, digitalInputsCallback); profileVelocityCallback = new HandleMessage(ProfileVelocityCB); bot.SetTagCB("profile_velocity.1.1", 0, IntPtr.Zero, profileVelocityCallback); profileAccelerationCallback = new HandleMessage(ProfileAccelerationCB); bot.SetTagCB("profile_acceleration.1.1", 0, IntPtr.Zero, profileAccelerationCallback); deployedCallback = new HandleMessage(DeployedCB); bot.SetTagCB("deployed", 0, IntPtr.Zero, deployedCallback); endOfProgramCallback = new HandleMessage(EndOfProgramCB); bot.SetTagCB("end-of-program", 0, IntPtr.Zero, endOfProgramCallback); errorCallback = new HandleMessage(ErrorCB); bot.SetTagCB("error", 0, IntPtr.Zero, errorCallback); bot.Connect(); Thread.Sleep(1000); bot.EvaluateScript(".ec-links"); bot.EvaluateScript("1 .slave"); timer1.Interval = 50; timer1.Enabled = true; }
/// <summary> /// Creates new receiver witch specified properies. /// </summary> /// <param name="appName"> Application name for which messages listener will be listening. </param> /// <param name="connectionString"> Connection string used to connect to DB. </param> /// <param name="messageHandler"> Handler used to handle typical NotificationMessage. Default: no handler is specified. </param> /// <param name="unsubscribedMessageHandler"> Handler used to handle unsubscribe NotificationMessage. Default: messageHandler handler is used. </param> /// <param name="errorMessageHandler"> Handler used to handle unsubscribe NotificationMessage. Default: unsubscribedMessageHandler handler is used. </param> /// <param name="sqlTimeout"> Timeout in seconds used for query. Default value uses value set in constructor. 0 indicates infinite. Default: 30. </param> public Receiver( string appName, string connectionString, HandleMessage messageHandler = null, HandleMessage unsubscribedMessageHandler = null, HandleMessage errorMessageHandler = null, int sqlTimeout = 30) { AppName = appName; SqlProcedures = new SqlProcedures(connectionString, sqlTimeout); MessageHandler += messageHandler; UnsubscribedMessageHandler += unsubscribedMessageHandler ?? messageHandler; ErrorMessageHandler += errorMessageHandler ?? unsubscribedMessageHandler ?? messageHandler; }
private void Form1_Load(object sender, EventArgs e) { bot = new Botnana("192.168.7.2"); onWsErrorCallback = new HandleMessage(OnWsErrorCB); bot.SetOnErrorCB(IntPtr.Zero, onWsErrorCallback); sdoIndexCallback = new HandleMessage(SdoIndexCB); bot.SetTagCB("sdo_index.1", 0, IntPtr.Zero, sdoIndexCallback); sdoSubindexCallback = new HandleMessage(SdoSubindexCB); bot.SetTagCB("sdo_subindex.1", 0, IntPtr.Zero, sdoSubindexCallback); sdoErrorCallback = new HandleMessage(SdoErrorCB); bot.SetTagCB("sdo_error.1", 0, IntPtr.Zero, sdoErrorCallback); sdoBusyCallback = new HandleMessage(SdoBusyCB); bot.SetTagCB("sdo_busy.1", 0, IntPtr.Zero, sdoBusyCallback); sdoDataCallback = new HandleMessage(SdoDataCB); bot.SetTagCB("sdo_data.1", 0, IntPtr.Zero, sdoDataCallback); realPositionCallback = new HandleMessage(RealPositionCB); bot.SetTagCB("real_position.1.1", 0, IntPtr.Zero, realPositionCallback); digitalInputsCallback = new HandleMessage(DigitalInputsCB); bot.SetTagCB("digital_inputs.1.1", 0, IntPtr.Zero, digitalInputsCallback); opModeCallback = new HandleMessage(OpModeCB); bot.SetTagCB("operation_mode.1.1", 0, IntPtr.Zero, opModeCallback); statusWordCallback = new HandleMessage(StatusWordCB); bot.SetTagCB("status_word.1.1", 0, IntPtr.Zero, statusWordCallback); errorCallback = new HandleMessage(ErrorCB); bot.SetTagCB("error", 0, IntPtr.Zero, errorCallback); homingCallback = new HandleMessage(HomingCB); bot.SetTagCB("homing", 0, IntPtr.Zero, homingCallback); slavesRespondingCallback = new HandleMessage(SlavesRespondingCB); bot.SetTagCB("slaves_responding", 1, IntPtr.Zero, slavesRespondingCallback); bot.Connect(); Thread.Sleep(1000); bot.EvaluateScript(".ec-links 0 $60B8 1 sdo-upload-i16 1 .slave"); timer1.Interval = 50; timer1.Enabled = true; }
private void NewClientAccept(object oClientSocket) { Socket clientSocket = oClientSocket as Socket; try { UserToken userToken = UserToken.Pop(); if (ClientInfosDic.TryAdd(clientSocket, userToken) && ClientSocketsDic.TryAdd(clientSocket.RemoteEndPoint + "", clientSocket)) { eShowMsg?.Invoke($"客户端上线,RemoteEndPoint:{clientSocket.RemoteEndPoint}"); userToken.socket = clientSocket; userToken.LastWorkingTime = DateTime.Now; if (userToken.ReciveArgs == null) { userToken.ReciveArgs = new SocketAsyncEventArgs(); userToken.ReciveArgs.Completed += ReciveArgs_Completed; userToken.ReciveHandler.server = this; if (_HandlePackage == null) { _HandlePackage = new Action <TcpServerSocket, string, byte[]>((sender, remoteEndPoint, msg) => { HandleMessage.Invoke(sender, remoteEndPoint, msg); }); } userToken.ReciveHandler.HandlePackage = _HandlePackage; userToken.ReciveHandler.dicSendedMessages = dicSendedPackages; userToken.ReciveHandler.dicRevivedMessages = dicRevivedPackages; userToken.ReciveHandler.ClientSocketDic = ClientInfosDic; userToken.ReciveArgs.UserToken = userToken; } userToken.ReciveHandler.clientSocket = clientSocket; userToken.ReciveHandler.Start(); byte[] data = new byte[ReciveBufferSize]; userToken.ReciveArgs.SetBuffer(data, 0, data.Length); userToken.ReciveArgs.AcceptSocket = clientSocket; clientSocket.ReceiveAsync(userToken.ReciveArgs); } else { DisposeClient(clientSocket, "加入客户端队列失败!"); } } catch (Exception err) { DisposeClient(clientSocket, err.Message); OnError?.Invoke(this, err); } }
private void FileSystem_Load(object sender, EventArgs e) { sendPath = worker.SendPath; worker.addDir = AddDirectoryInTree; worker.addFile = AddFileInTree; worker.completeTransInfo = Complete; tree.ImageList = imageList; TreeNode node = new TreeNode("c:\\"); node.ImageKey = "folder"; node.SelectedImageKey = "folder"; this.tree.Nodes.Add(node); }
public void AddDirectoryInTree(string directoryName) { if (tree.InvokeRequired) { HandleMessage handleMessage = new HandleMessage(AddDirectoryInTree); Invoke(handleMessage, new object[] { directoryName }); } else { TreeNode subNode = new TreeNode(directoryName); subNode.ImageKey = "folder"; subNode.SelectedImageKey = "folder"; treeNode.Nodes.Add(subNode); } }
/// <summary> /// Send a put message to the uri and pass the response message to the handle message method /// </summary> /// <param name="uri"></param> /// <param name="body"></param> /// <param name="handleMessage"></param> public static async Task PutAsync(string uri, dynamic body, HandleMessage handleMessage) { var httpClient = new HttpClient(); var bodyString = JsonConvert.SerializeObject(body); var httpUri = new Uri(uri); var httpBody = new HttpStringContent(bodyString); var responseMessage = await httpClient.PutAsync(httpUri, httpBody); var responseString = await responseMessage.Content.ReadAsStringAsync(); handleMessage(JsonConvert.DeserializeObject(responseString)); }
public void AddFileInTree(string fileName) { if (tree.InvokeRequired) { HandleMessage handleMessage = new HandleMessage(AddFileInTree); Invoke(handleMessage, new object[] { fileName }); } else { TreeNode subNode = new TreeNode(fileName); subNode.ImageKey = "file"; subNode.SelectedImageKey = "file"; treeNode.Nodes.Add(subNode); } }
public void receiveOuput(string output) { if (this.panel1.InvokeRequired) { HandleMessage a = new HandleMessage(receiveOuput); Invoke(a, new object[] { output }); } else { Label label = new Label(); label.Text = output; label.Size = new Size(600, 20); label.Location = new Point(0, pos); pos += label.Height; label.Parent = panel1; panel1.Controls.Add(label); } }
private void UpdateList(string message) { if (mainPanel.InvokeRequired) { HandleMessage a = new HandleMessage(UpdateList); Invoke(a, new object[] { message }); } else { Label label = new Label(); label.Text = message; label.Size = new Size(1200, 50); label.Location = new Point(0, pos); pos += label.Height; label.Parent = mainPanel; mainPanel.Controls.Add(label); } }
/// <summary> /// Type=2 群消息<para/> /// 处理收到的群消息 /// </summary> /// <param name="sender">事件的触发对象</param> /// <param name="e">事件的附加参数</param> public void ReceiveGroupMessage(object sender, GroupMessageEventArgs e) { // 本子程序会在酷Q【线程】中被调用,请注意使用对象等需要初始化(CoInitialize,CoUninitialize)。 // 这里处理消息 try { if (e.Handled || !Common.ConfigLoader.Config.Groups.Contains(e.FromGroup)) { return; } e.Handled = HandleMessage.ReceiveMessage(e.FromQQ, e.Msg, false); } catch (Exception ex) { Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Error, "错误", ex.Message); e.Handled = false; } }
public void StartReceiveMessage(HandleMessage printMessage) { if (_startReceiveMessage) { return; } _startReceiveMessage = true; //StreamReader sr = new StreamReader(_pipeClient); //Connect(); //_pipeClient.BeginWrite(data, 0, data.Length, PipeWriteCallback, _pipe); //_pipeClient.BeginRead() ThreadPool.QueueUserWorkItem(delegate { while (_startReceiveMessage) { if (_pipeClient.IsConnected) { var data = new byte[PipeInBufferSize]; var count = _pipeClient.Read(data, 0, data.Length); if (count > 0) { string message = encoding.GetString(data, 0, count); printMessage(message); } Thread.Sleep(100); //if (_pipeClient.CanRead) //{ // printMessage(sr.ReadLine()); //} } else { Thread.Sleep(1000); Connect(); } //StreamString ss = new StreamString(pipeClient); //printMessage(ss.ReadString()); } }); }
public ResponseMessage DDSSAwdssssa([FromBody] ChatRequest data) { if (data.token != apikey) { return(new ResponseMessage() { text = "Invalid API key", thread = data.message.thread }); } var response = new HandleMessage(); return(new ResponseMessage() { text = response.CreateResponseMessage(data), thread = data.message.thread }); }
/// <summary> /// Initializes a new instance of the <see cref="RedisQueueReceiveMessages" /> class. /// </summary> /// <param name="workSubFactory">The work sub factory.</param> /// <param name="receiveMessage">The receive message.</param> /// <param name="handleMessage">The handle message.</param> /// <param name="headers">The headers.</param> /// <param name="cancelWork">The cancel work.</param> /// <param name="receiveMessageAsync">The receive message asynchronous.</param> public RedisQueueReceiveMessages(IRedisQueueWorkSubFactory workSubFactory, IQueryHandler <ReceiveMessageQuery, RedisMessage> receiveMessage, HandleMessage handleMessage, IHeaders headers, IQueueCancelWork cancelWork, IQueryHandler <ReceiveMessageQueryAsync, Task <RedisMessage> > receiveMessageAsync) { Guard.NotNull(() => workSubFactory, workSubFactory); Guard.NotNull(() => receiveMessage, receiveMessage); Guard.NotNull(() => handleMessage, handleMessage); Guard.NotNull(() => headers, headers); Guard.NotNull(() => cancelWork, cancelWork); Guard.NotNull(() => receiveMessageAsync, receiveMessageAsync); _receiveMessage = receiveMessage; _handleMessage = handleMessage; _headers = headers; _cancelWork = cancelWork; _receiveMessageAsync = receiveMessageAsync; _workSubFactory = workSubFactory; }
public ActionResult <IEnumerable <IHandleMessage> > Post(AddressModel address) { try { var entity = this._mapper.Map <Address>(address); var result = this._service.SaveData(entity); if (result.Any(r => r.Code.Equals(HandlesCode.Accepted) || r.Code.Equals(HandlesCode.Ok))) { return(StatusCode((int)HttpStatusCode.OK, result)); } else { return(StatusCode((int)HttpStatusCode.BadRequest, result)); } } catch (Exception e) { return(StatusCode((int)HttpStatusCode.InternalServerError, HandleMessage.Factory(e.GetType().Name, e.Message, HandlesCode.InternalException, e.StackTrace))); } }
/// <summary> /// Type=21 好友消息<para/> /// 处理收到的好友消息 /// </summary> /// <param name="sender">事件的触发对象</param> /// <param name="e">事件的附加参数</param> public void ReceiveFriendMessage(object sender, PrivateMessageEventArgs e) { // 本子程序会在酷Q【线程】中被调用,请注意使用对象等需要初始化(CoInitialize,CoUninitialize)。 // 这里处理消息 try { if (e.Handled) { return; } e.Handled = HandleMessage.ReceiveMessage(e.FromQQ, e.Msg); } catch (Exception ex) { Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Error, "错误", ex.Message); e.Handled = false; } // e.Handled 相当于 原酷Q事件的返回值 // 如果要回复消息,请调用api发送,并且置 true - 截断本条消息,不再继续处理 //注意:应用优先级设置为"最高"(10000)时,不得置 true // 如果不回复消息,交由之后的应用/过滤器处理,这里置 false - 忽略本条消息 }
public StatsdListener(int port, HandleMessage handleMessage) { _messageHandler = handleMessage; _endPoint = new IPEndPoint(IPAddress.Any, port); _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); }
protected async void udpReceiveAsync(int port, HandleMessage handleMessage) { IPEndPoint remoteIP = new IPEndPoint(IPAddress.Any, port); UdpClient udpClient = new UdpClient(remoteIP); while (true) { UdpReceiveResult rst = await udpClient.ReceiveAsync(); handleMessage(Encoding.ASCII.GetString(rst.Buffer), rst.RemoteEndPoint.Address); } }