//public BaseResult SubscribeVariable(SessionID sessionId, int senderId, TcpSocketManager tcpSocket) //{ // try // { // SharedState<MessageBuffer> globalValue = new SharedState<MessageBuffer>("ClipPlane", SharedStateType.ALWAYS_SHARE); // MessageBuffer mb = globalValue.OnSessionEnter(sessionId, senderId); // Message m = new Message(mb, Message.MessagesType.COVISE_MESSAGE_VRB_REGISTRY_SUBSCRIBE_VARIABLE, senderId); // tcpSocket.send_msg_with_SenderId(m); // return new BaseResult(); // } // catch (Exception e) // { // log.Fatal("Method SubscribeVariable is Crashed!" + e); // return new BaseResult(e); // } //} //public BaseResult ChangeVariable(SessionID sessionId, int senderId, TcpSocketManager tcpSocket, string variableName, string variablValue) //{ // try // { // SharedState<MessageBuffer> globalValue = new SharedState<MessageBuffer>(variableName, SharedStateType.ALWAYS_SHARE); // MessageBuffer mb = globalValue.ChangeSharedState(sessionId, senderId, variablValue); // Message m = new Message(mb, Message.MessagesType.COVISE_MESSAGE_VRB_REGISTRY_SET_VALUE, senderId); // tcpSocket.send_msg_with_SenderId(m); // return new BaseResult(); // } // catch (Exception e) // { // log.Fatal("Method ChangeVariable is Crashed!" + e); // return new BaseResult(e); // } //} //public BaseResult ChangeVariable(SessionID sessionId, int senderId, TcpSocketManager tcpSocket, string variableName, float[] variablValue) //{ // try // { // SharedState<MessageBuffer> globalValue = new SharedState<MessageBuffer>(variableName, SharedStateType.ALWAYS_SHARE); // MessageBuffer mb = globalValue.ChangeSharedState(sessionId, senderId, variablValue); // Message m = new Message(mb, Message.MessagesType.COVISE_MESSAGE_VRB_REGISTRY_SET_VALUE, senderId); // tcpSocket.send_msg_with_SenderId(m); // return new BaseResult(); // } // catch (Exception e) // { // log.Fatal("Method ChangeVariable is Crashed!" + e); // return new BaseResult(e); // } //} public ValueResult <UserModel> ReadUser(ValueResult <UserModel> user) { try { var buffer = new byte[64000]; var ns = TcpClient.GetStream(); while (true) { int len = 0; while (len < 16) { int numRead; try { numRead = ns.Read(buffer, len, 16 - len); } catch (System.IO.IOException) { // probably socket closed return(new ValueResult <UserModel>()); } len += numRead; } int msgType = BitConverter.ToInt32(buffer, 2 * 4); int length = BitConverter.ToInt32(buffer, 3 * 4); length = (int)ByteSwap.swap((uint)length); msgType = (int)ByteSwap.swap((uint)msgType); len = 0; while (len < length) { int numRead; try { numRead = ns.Read(buffer, len, length - len); } catch (System.IO.IOException) { // probably socket closed return(new ValueResult <UserModel>()); } len += numRead; } Message m = new Message(new MessageBuffer(buffer), (Message.MessagesType)msgType); switch (m.Type) { case Message.MessagesType.COVISE_MESSAGE_VRB_GET_ID: clientID = m.message.readInt(); user.Value.UserId = clientID; return(user); } } } catch (Exception e) { log.Fatal("Method ReadUser is Crashed!" + e); return(null); } }
public async Task <BaseResult> Read() { try { var buffer = new byte[64000]; var ns = TcpClient.GetStream(); while (true) { int len = 0; while (len < 16) { if (ns.DataAvailable) { var numRead = await ns.ReadAsync(buffer, len, 16 - len); if (numRead == 0) { return(new BaseResult()); } len += numRead; } } int msgType = BitConverter.ToInt32(buffer, 2 * 4); int length = BitConverter.ToInt32(buffer, 3 * 4); length = (int)ByteSwap.swap((uint)length); msgType = (int)ByteSwap.swap((uint)msgType); len = 0; var msgBuffer = new byte[length]; while (len < length) { try { var numRead = await ns.ReadAsync(msgBuffer, len, length - len); if (numRead == 0) { return(new BaseResult()); } len += numRead; } catch (System.IO.IOException e) { } } Message m = new Message(new MessageBuffer(msgBuffer), (Message.MessagesType)msgType); switch (m.Type) { case Message.MessagesType.COVISE_MESSAGE_VRBC_SEND_SESSIONS: int sessioncount = m.message.readInt(); MessageHandler.RoomList.Clear(); RoomList.Clear(); for (int i = 0; i < sessioncount; i++) { SessionID room = new SessionID(); SharedStateSerializer.deserialize(ref m.message, ref room); if (room.m_isPrivate == false) { RoomList.Add(room); } else { RoomsViewModel.privateSession = room; } } MessageHandler.addCurrentRooms(RoomList); break; case Message.MessagesType.COVISE_MESSAGE_VRBC_SET_SESSION: SessionID currentSession = new SessionID(); SharedStateSerializer.deserialize(ref m.message, ref currentSession); MessageHandler.addCurrentSession(currentSession); SharedStateManager.Instance.update(new SessionID(clientID, clientID.ToString(), true), currentSession, false, false); break; case Message.MessagesType.COVISE_MESSAGE_VRB_REGISTRY_ENTRY_CHANGED: int senderID = m.message.readInt(); string className = m.message.readString(); string variable = m.message.readString(); MessageBuffer mb4 = m.message.readMessageBuffer(); SharedStateManager.Instance.updateSharedState(className, variable, mb4); break; case Message.MessagesType.COVISE_MESSAGE_VRB_SET_USERINFO: int sessionSwitchUserId = m.message.readInt(); break; case Message.MessagesType.COVISE_MESSAGE_VRB_QUIT: int disconnectedUserId = m.message.readInt(); string msgDisconnectedUser = "******" + disconnectedUserId.ToString() + "|"; SendDisconnecteUser(msgDisconnectedUser); break; case Message.MessagesType.COVISE_MESSAGE_VRB_MESSAGE: int msgIdentifyer = m.message.readInt(); // Head Position if (msgIdentifyer == 100) { int senderId = m.message.readInt(); string ipAddress = m.message.readString(); int positionX = m.message.readInt(); int positionY = m.message.readInt(); int positionZ = m.message.readInt(); int rotationX = m.message.readInt(); int rotationY = m.message.readInt(); int rotationZ = m.message.readInt(); string msgHead = "HEAD:" + senderId.ToString() + " " + positionX.ToString() + " " + positionY.ToString() + " " + positionZ.ToString() + " " + rotationX.ToString() + " " + rotationY + " " + rotationZ.ToString() + "|"; SendHmdPosition(msgHead); break; } //ControllerPosition if (msgIdentifyer == 101) { int senderId = m.message.readInt(); int handId = m.message.readInt(); int Controller_PositionX = m.message.readInt(); int Controller_PositionY = m.message.readInt(); int Controller_PositionZ = m.message.readInt(); int Controller_RotationX = m.message.readInt(); int Controller_RotationY = m.message.readInt(); int Controller_RotationZ = m.message.readInt(); int Controller_OffSetRotationZ = m.message.readInt(); var ControllerDataIntArray = new int[] { senderId, msgType, handId, Controller_PositionX, Controller_PositionY, Controller_PositionZ, Controller_RotationX, Controller_RotationY, Controller_RotationZ }; string msgController = "CONTROLLER:" + senderId.ToString() + " " + handId.ToString() + " " + Controller_PositionX.ToString() + " " + Controller_PositionY.ToString() + " " + Controller_PositionZ + " " + Controller_RotationX + " " + Controller_RotationY + " " + Controller_RotationZ + " " + Controller_OffSetRotationZ + "|"; SendControllerPosition(msgController); break; } if (msgIdentifyer == 103) { int disconnectedUserId_SessionChanged = m.message.readInt(); string msgDisconnectedUser2 = "DISCONNECTEDUSER:"******"|"; SendDisconnecteUser(msgDisconnectedUser2); break; } if (msgIdentifyer == 102) { int buttonId = m.message.readInt(); int handId = m.message.readInt(); int senderId = m.message.readInt(); // TODO need unter Type für Controller solange solte es so gehen if (senderId < 100) { int[] intArrayControllerInput = new int[3]; intArrayControllerInput[0] = buttonId; intArrayControllerInput[1] = handId; intArrayControllerInput[2] = senderId; string msgControllerInput = "CONTROLLERINPUT:" + buttonId.ToString() + " " + handId.ToString() + " " + senderId.ToString() + "|"; SendControllerInput(msgControllerInput); break; } break; } break; } } } catch (Exception e) { log.Fatal("Method Read is Crashed!" + e); return(new BaseResult()); } }