/// <summary> /// Send a string (Unicode) based data request or send to the server. /// </summary> /// <param name="data"> The string data in Unicode to send. </param> /// <param name="dataType"> The type of request to send to the server. </param> private static object SendStringData(string data, ServerRequestTypes dataType) { string dataAsString = data; byte[] dataAsBytes = Encoding.Unicode.GetBytes(dataAsString); byte[] headerData = GenerateHeaderData(dataType, (uint)dataAsBytes.Length); byte[] toSend = new byte[headerData.Length + dataAsBytes.Length]; headerData.CopyTo(toSend, 0); dataAsBytes.CopyTo(toSend, headerData.Length); switch (dataType) { case ServerRequestTypes.GetEmail: case ServerRequestTypes.GetLastModifiedDate: case ServerRequestTypes.GetNumberOfQuizzesByAuthorName: return(ReceiveFromServerStringData(toSend)); case ServerRequestTypes.GetQuizzesByAuthorName: case ServerRequestTypes.GetQuizzesByQuizName: case ServerRequestTypes.GetQuizzesByCategory: case ServerRequestTypes.GetMissingQuizzesByAuthorName: return(ReceiveFromServerListOfStringArrays(toSend)); case ServerRequestTypes.GetRealmFile: case ServerRequestTypes.GetJPEGImage: return(ReceiveFromServerBytes(toSend)); default: return(ReceiveFromServerORM(toSend)); } }
/// <summary> /// Generate a header to detail what to do with data when server receives byte data. /// </summary> /// <param name="type">The type of server request to be performed.</param> /// <param name="size">The size of the data being sent to the server.</param> /// <returns></returns> private static byte[] GenerateHeaderData(ServerRequestTypes type, uint size) { byte[] headerData = new byte[stringHeaderSize]; headerData[0] = (byte)type; byte[] dataSize = BitConverter.GetBytes(size); dataSize.CopyTo(headerData, 1); return(headerData); }