コード例 #1
0
 /// <summary>
 /// Send data to another side.
 /// </summary>
 /// <param name="messageType"></param>
 /// <param name="bits"></param>
 /// <returns></returns>
 async Task SendBytesAsync(TransferMessageType messageType, byte[] bits)
 {
     await this.SendAsync(
         messageType,
         bits.Length,
         async() =>
     {
         await this._socket.OutputStream.WriteAsync(bits.AsBuffer());
     }
         );
 }
コード例 #2
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="messageType"></param>
    /// <param name="messageBody"></param>
    void MessageHandler(TransferMessageType messageType, object messageBody)
    {
        switch (messageType)
        {
        case TransferMessageType.WorldAnchor:
            CurrentState = SharingServiceState.ReadyToImportChangedAnchor;
            ReceiveNewAnchor((byte[])messageBody);
            break;

        case TransferMessageType.Event:
            CurrentState = SharingServiceState.ReadyToImportEventHandler;
            var rawData = System.Text.Encoding.UTF8.GetString((byte[])messageBody);

            var items = rawData.Split('|');
            switch (items[0])
            {
            case "SelectStock":
                var panel      = GameObject.Find("No1Panel");
                var controller = panel.GetComponentInChildren <No1PanelController>();

                controller.SelectStock(items[1], items[2], items[3], Convert.ToBoolean(items[4]), items[5], items[6], items[7]);

                break;

            case "ShowNextPanel":
                var panel2      = GameObject.Find("No2Panel");
                var controller2 = panel2.GetComponentInChildren <No2PanelController>();

                controller2.ShowNextPanel();
                break;
            }

            break;
        }

        CurrentState = SharingServiceState.ConnectionEstablished;

        //if (messageType == TransferMessageType.String)
        //{
        //    OutputDebugInfo(messageBody.ToString());
        //}
        //else if (messageType == TransferMessageType.Buffer)
        //{
        //    ReceiveNewAnchor((byte[])messageBody);
        //}
    }
コード例 #3
0
    /// <summary>
    /// SendAsync
    /// </summary>
    /// <param name="messageType"></param>
    /// <param name="length"></param>
    /// <param name="writeBitsAsync"></param>
    /// <returns></returns>
    async Task SendAsync(TransferMessageType messageType, int length, Func <Task> writeBitsAsync)
    {
        if (this._socket == null)
        {
            throw new InvalidOperationException("Socket not connected");
        }
        var data = BitConverter.GetBytes(length);

        if (BitConverter.IsLittleEndian)
        {
            Array.Reverse(data);
        }
        await this._socket.OutputStream.WriteAsync(data.AsBuffer());

        await writeBitsAsync();

        data = new byte[] { (byte)messageType };
        await this._socket.OutputStream.WriteAsync(data.AsBuffer());

        await this._socket.OutputStream.FlushAsync();
    }