コード例 #1
0
    public static void SqlTrigger()
    {
        var context = SqlContext.TriggerContext;

        if (context == null || context.TriggerAction != TriggerAction.Insert)
        {
            return;
        }

        using (
            var con =
                new SqlConnection(" context connection=true"))
        {
            con.Open();
            using (var cmd = new SqlCommand("SELECT Name FROM INSERTED", con))
            {
                using (var reader = cmd.ExecuteReader())
                {
                    var pipe = SqlContext.Pipe;
                    if (pipe == null)
                    {
                        return;
                    }

                    while (reader.Read())
                    {
                        pipe.Send(reader[0].ToString());
                        var sender = new SocketSender();
                        sender.MessageReceived += (o, message) => pipe.Send(message);
                        sender.Send(reader[0].ToString());
                    }
                }
            }
        }
    }
コード例 #2
0
        public Guid CreateSession(SocketSender socketSender)
        {
            var id = Guid.NewGuid();

            sessions[id] = new Session(id, pluginProvider, socketSender);
            return(id);
        }
コード例 #3
0
        public IPlugin Create(HardwareDetails details, SocketSender socketSender)
        {
            var controllerType = details.ControllerType;
            var boardName      = details
                                 .BoardName;

            return(pluginCreators[controllerType][boardName]?.Invoke(details, socketSender));
        }
コード例 #4
0
 public SocketConnection(EndPoint endpoint)
 {
     _socket   = new Socket(SocketType.Stream, ProtocolType.Tcp);
     _endpoint = endpoint;
     _sender   = new SocketSender(_socket, PipeScheduler.ThreadPool);
     _receiver = new SocketReceiver(_socket, PipeScheduler.ThreadPool);
     Features.Set <IConnectionInherentKeepAliveFeature>(this);
 }
コード例 #5
0
 public static void TransmitPacket(MemoryStream m, int connectionId)
 {
     m.Position = 0;
     SocketSender.SendPacket(m, connectionId);
     // Decode it
     //m.Position = 0;
     //LiteNetworkingGenerated.PacketReader.ReadPacket(m);
 }
コード例 #6
0
        void OnEnable()
        {
            SocketReceiver.OnLeftRoom      += OnLeftRoom;
            SocketReceiver.OnGotPlayerList += OnGotPlayerList;
            SocketReceiver.OnRoomReady     += OnRoomReady;

            SocketSender.Send("GetPlayerList", SocketLobby.Room.roomID);
        }
コード例 #7
0
        public UdpSocket()
        {
            var socket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            m_Socket = socket;

            m_Sender   = new SocketSender(m_Socket);
            m_Receiver = new SocketRecevier(m_Socket, SocketMessageFactory.Instance);
        }
コード例 #8
0
        void Start()
        {
            connectButton.onClick.AddListener(() => {
                connectButton.interactable = false;

                SocketLobby.Instance.SetGameServerUrl(serverInput.text);

                SocketSender.Send("Connect", SocketLobby.Instance.settings.gameServerUrl);
            });
        }
コード例 #9
0
        void UpdatePlayer()
        {
            UpdatePlayerData updatePlayerData = new UpdatePlayerData();

            updatePlayerData.roomID = SocketLobby.Room.roomID;
            updatePlayerData.player = player;

            SocketLobby.Instance.SetPlayer(player);

            SocketSender.Send("UpdatePlayer", JsonUtility.ToJson(updatePlayerData));
        }
コード例 #10
0
ファイル: SocketClient.cs プロジェクト: xxmingming/IM-6
 public void Start(string serverHost, int serverPort, int socketTimeout = 3000)
 {
     try
     {
         this.SocketSender = new SocketSender(serverHost, serverPort, socketTimeout);
     }
     catch
     {
         throw;
     }
 }
コード例 #11
0
 public void Cleanup()
 {
     if (this.Sender != null)
     {
         this.Sender = null;
     }
     if (this.Listener != null)
     {
         this.Listener.Stop();
     }
 }
コード例 #12
0
        void Start()
        {
            roomName.text = SocketLobby.Room.roomName;

            leaveRoomButton.onClick.AddListener(() => {
                leaveRoomButton.interactable = false;

                leaveRoomLoading.SetActive(true);

                SocketSender.Send("LeaveRoom", SocketLobby.Room.roomID);
            });
        }
コード例 #13
0
    public TcpConnection(EndPoint endPoint)
    {
        _socket   = new Socket(SocketType.Stream, ProtocolType.Tcp);
        _endPoint = endPoint;

        _sender   = new SocketSender(_socket, PipeScheduler.ThreadPool);
        _receiver = new SocketReceiver(_socket, PipeScheduler.ThreadPool);

        // Add IConnectionInherentKeepAliveFeature to the tcp connection impl since Kestrel doesn't implement
        // the IConnectionHeartbeatFeature
        Features.Set <IConnectionInherentKeepAliveFeature>(this);
    }
コード例 #14
0
        IEnumerator CountDown()
        {
            for (int i = countdown - 1; i > 0; i--)
            {
                yield return(new WaitForSeconds(1f));

                startGameCountDownText.text = i.ToString();
            }

            yield return(new WaitForSeconds(1f));

            SocketSender.Send("StartGame", SocketLobby.Room.roomID);
        }
コード例 #15
0
ファイル: Program.cs プロジェクト: CuteITGuy/TestSocket
        private static void Main()
        {
            var sender = new SocketSender();

            sender.Error           += Sender_Error;
            sender.MessageReceived += Sender_MessageReceived;
            while (true)
            {
                Console.Write("Message: ");
                var message = Console.ReadLine();
                sender.Send(message);
            }
        }
コード例 #16
0
        public async ValueTask OpenAsync(string host, string database, string userName, string password,
                                         CancellationToken cancellationToken)
        {
            m_connectorState = ConnectorState.Connecting;
            var socketTask = ConnectAsync(host);
            var socket     = socketTask.IsCompletedSuccessfully
                ? socketTask.Result
                : await socketTask.ConfigureAwait(false);

            var sendBufferBytes    = m_arrayPool.Rent(512);
            var receiveBufferBytes = m_arrayPool.Rent(512);

            try
            {
                var sendBuffer    = new Memory <byte>(sendBufferBytes);
                var receiveBuffer = new Memory <byte>(sendBufferBytes);

                var sender = new SocketSender(socket);
                var sendStartupMessageTask =
                    SendStartupMessage(sender, sendBuffer, database, userName, cancellationToken);
                if (!sendStartupMessageTask.IsCompletedSuccessfully)
                {
                    await sendStartupMessageTask.ConfigureAwait(false);
                }

                var receiver = new SocketReceiver(socket);
                var processStartupMessageResponseTask = ProcessStartupMessageResponse(sender, sendBuffer, receiver, receiveBuffer,
                                                                                      userName, password, cancellationToken);
                if (!processStartupMessageResponseTask.IsCompletedSuccessfully)
                {
                    await processStartupMessageResponseTask.ConfigureAwait(false);
                }

                m_connectorState = ConnectorState.ReadyForQuery;

                m_connectionInfo          = new ConnectionInfo();
                m_connectionInfo.Host     = host;
                m_connectionInfo.Database = database;
                m_connectionInfo.UserName = userName;
                m_connectionInfo.Password = password;

                m_socket = socket;
            }
            finally
            {
                m_arrayPool.Return(sendBufferBytes);
                m_arrayPool.Return(receiveBufferBytes);
            }
        }
コード例 #17
0
        public void SetRoom(RoomData room)
        {
            this.room = room;

            roomName.text    = room.roomName;
            roomPlayers.text = room.playerCount.ToString() + "/" + SocketLobby.Instance.settings.maxPlayersPerRoom.ToString();

            joinRoomButton.onClick.AddListener(() => {
                joinRoomButton.interactable = false;

                transform.parent.parent.GetComponent <LobbyPanel>().joinRoomLoading.SetActive(true);

                SocketSender.Send("JoinRoom", room.roomID);
            });
        }
コード例 #18
0
        private bool disposedValue = false; // To detect redundant calls

        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects).
                }

                device       = null;
                socketSender = null;

                disposedValue = true;
            }
        }
コード例 #19
0
        public void TestSocketSender()
        {
            SocketSender _sender = new SocketSender(this.ServerHost, this.ServerPort, this.SocketTimeout);
            var          _data   = _sender.Send(Encoding.Default.GetBytes(this.Send));

            if (_data != null && _data.Length > 0)
            {
                this.ResponseReceived = Encoding.Default.GetString(_data);
            }
            bool _result = ManualResetEvent.WaitOne(this.SocketTimeout);

            _sender = null;

            Assert.AreEqual(true, _result, "Listener接收socket超时");
            Assert.AreEqual(this.Send, this.SendReceived, string.Format("Client发送内容:{0},Listener监听到内容:{1}", this.Send, this.SendReceived));
            Assert.AreEqual(this.Response, this.ResponseReceived, string.Format("Listener响应内容:{0},Client接收到响应:{1}", this.Response, this.ResponseReceived));
        }
コード例 #20
0
        private void SendReceive(Socket client)
        {
            ISocketReceiver <string> _receiver = new SocketReceiver(_client, 1024, 128);
            ISocketSender <string>   _sender   = new SocketSender(_client);

            while (true)
            {
                if (client != null && !client.Connected)
                {
                    break;
                }
                else if (client != null && client.Connected)
                {
                    _sender.Send("", new ServerSenderAuthenticationLogic());
                    _receiver.Read(new ServerReceiverAuthenticationLogic());
                }

                Thread.Sleep(1000);
            }
        }
コード例 #21
0
        protected override void SendReceive()
        {
            ISocketSender   sender   = new SocketSender(_client);
            ISocketReceiver receiver = new SocketReceiver(_client);

            ILogic authen = new BaseSocketLogic(new SocketAuthenLogic(sender, receiver), _client);
            ILogic biz    = new BaseSocketLogic(new SocketBusinessLogic(sender, receiver), _client);

            LogicFlowModel[] logics =
            {
                //new LogicFlowModel { Logic = authen, Seq = 3 },
                new LogicFlowModel {
                    Logic = biz, Seq = 5
                }
            };

            BaseLogicFlow logicMgr = new SocketLogicFlow(logics);

            logicMgr.Execute();
        }
コード例 #22
0
        void Start()
        {
            ui = GetComponent <SocketLobbyUI>();

            ConfigData config = new ConfigData();

            config.maxPlayersPerRoom    = settings.maxPlayersPerRoom;
            config.minPlayerToStartGame = settings.minPlayersToStartGame;
            config.playerColors         = settings.playerColors;
            config.defaultPlayerColor   = settings.defaultPlayerColorIndex;

            SocketSender.Send("SetConfig", JsonUtility.ToJson(config));

            ui.CreateTopPanel();
            ui.CreateConnectPanel();

            SocketReceiver.OnConnected         += OnConnected;
            SocketReceiver.OnDisconnected      += OnDisconnected;
            SocketReceiver.OnConnectionTimeout += OnConnectionTimeout;
            SocketReceiver.OnStartedGame       += OnStartedGame;
        }
コード例 #23
0
        void Start()
        {
            roomNameInput.text = defaultRoomName;

            createRoomButton.onClick.AddListener(() => {
                roomNameInput.interactable    = false;
                createRoomButton.interactable = false;

                createRoomLoading.SetActive(true);

                SocketSender.Send("CreateRoom", roomNameInput.text == "" ? defaultRoomName : roomNameInput.text);
            });

            refreshButton.onClick.AddListener(() => {
                refreshButton.interactable = false;

                fetchRoomListLoading.SetActive(true);

                SocketSender.Send("GetRoomList");
            });

            fetchRoomListLoading.SetActive(true);
            SocketSender.Send("GetRoomList");
        }
コード例 #24
0
ファイル: Messenger.cs プロジェクト: fl0wstream/HashMessenger
        public static void Init()
        {
            Listener = new SocketListener();

            Thread listenThread = new Thread(Listener.Listen);

            listenThread.Start();

            Sender = new SocketSender("localhost");

            Listener.OnMessageRecieve += Listener_OnMessageRecieve;

            try
            {
                SendMessageLoop();
            }
            catch (Exception e)
            {
                Console.WriteLine("[HashMessenger] " + e);
            }

            Listener.Dispose();
            Sender.Dispose();
        }
コード例 #25
0
        public async ValueTask Cancel(CancellationToken cancellationToken)
        {
            if (m_processId == 0)
            {
                ThrowHelper.ThrowPostgresException("Cancellation not supported on this database (no BackendKeyData was received during connection)");
            }

            var connectionInfo = m_connectionInfo;

            await using var connector = new PgConnector(m_arrayPool);
            var openTask = connector.OpenAsync(connectionInfo.Host, connectionInfo.Database, connectionInfo.UserName,
                                               connectionInfo.Password, cancellationToken);

            if (!openTask.IsCompletedSuccessfully)
            {
                await openTask.ConfigureAwait(false);
            }
            var cancelRequest = new CancelRequest(m_processId, m_secretKey);
            var socket        = connector.m_socket !;
            var sender        = new SocketSender(socket);
            var sendTask      = connector.WriteAndSendMessage(sender, cancelRequest, cancellationToken);

            if (sendTask.IsCompletedSuccessfully)
            {
                await sendTask.ConfigureAwait(false);
            }

            // Now wait for the server to close the connection, better chance of the cancellation
            // actually being delivered before we continue with the user's logic.
            var waitTask = connector.WaitForDisconnect(socket, cancellationToken);

            if (waitTask.IsCompletedSuccessfully)
            {
                await waitTask.ConfigureAwait(false);
            }
        }
コード例 #26
0
 public FakeSerialPlugin(HardwareDetails details, SocketSender socketSender)
 {
     this.socketSender    = socketSender;
     this.HardwareDetails = details;
 }
コード例 #27
0
 private IPlugin CreateFakeSerialPlugin(HardwareDetails details, SocketSender socketSender)
 {
     return(new FakeSerialPlugin(details, socketSender));
 }
コード例 #28
0
 public WriteSocketTests()
 {
     Services = new FakeServices();
     Socket   = new FakeSocket();
     Sender   = new SocketSender(Services, Socket);
 }
コード例 #29
0
ファイル: SocketClient.cs プロジェクト: xxmingming/IM-6
 public void Stop()
 {
     this.SocketSender = null;
 }
コード例 #30
0
 void Awake()
 {
     _sender   = new SocketSender();
     _listener = new SocketListener();
 }