public ValueResult <SessionID> JoinSession(SessionID currentSession, int senderId, SessionID sid) //(ValueResult<RoomModel> session) { try { // Session verlassen MessageBuffer mb = new MessageBuffer(); SharedStateSerializer.serialize(ref mb, currentSession); Message m = new Message(mb, Message.MessagesType.COVISE_MESSAGE_VRBC_UNOBSERVE_SESSION); tcpSocket.send_msg(m); //neue Session setzen und Senden MessageBuffer mb2 = new MessageBuffer(); SharedStateSerializer.serialize(ref mb2, sid); mb2.add(senderId); Message m2 = new Message(mb2, Message.MessagesType.COVISE_MESSAGE_VRBC_SET_SESSION); tcpSocket.send_msg(m2); return(new ValueResult <SessionID>(sid)); } catch (Exception e) { log.Error("Method JoinSession is crashed!" + e); return(new ValueResult <SessionID>(e)); } }
public ValueResult <SessionID> sendSetNewSessionMessage(int userId, string sessionName) { try { MessageBuffer mb = new MessageBuffer(); var sid = new SessionID(userId, sessionName, false); SharedStateSerializer.serialize(ref mb, sid); mb.add(userId); Message msg = new Message(mb, Message.MessagesType.COVISE_MESSAGE_VRB_REQUEST_NEW_SESSION); send_msg(msg); ValueResult <SessionID> currentSession = new ValueResult <SessionID>(); currentSession.Value = sid; return(currentSession); } catch (Exception e) { log.Fatal("Method sendSetNewSessionMessage is Crashed!" + e); return(new ValueResult <SessionID>(e)); } }
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()); } }