/// <summary> /// Defines the encoding method to use for the server. /// </summary> /// <param name="encoding"></param> public void SetEncodingMode(EncodingDefinition encoding) { m_encodingMode = Library.CreateStreamEncoding <TKey, TValue>(encoding); m_stream.Write((byte)ServerCommand.SetEncodingMethod); encoding.Save(m_stream); m_stream.Flush(); var command = (ServerResponse)m_stream.ReadUInt8(); switch (command) { case ServerResponse.UnhandledException: string exception = m_stream.ReadString(); throw new Exception("Server UnhandledExcetion: \n" + exception); case ServerResponse.UnknownEncodingMethod: throw new Exception("Server does not recgonize encoding method"); case ServerResponse.EncodingMethodAccepted: break; default: throw new Exception("Unknown server response: " + command.ToString()); } }
public PointReader(StreamEncodingBase <TKey, TValue> encodingMethod, RemoteBinaryStream stream, Action onComplete) { m_onComplete = onComplete; m_encodingMethod = encodingMethod; m_stream = stream; encodingMethod.ResetEncoder(); }
/// <summary> /// This function will verify the connection, create all necessary streams, set timeouts, and catch any exceptions and terminate the connection /// </summary> /// <returns>True if successful, false if needing to exit the socket.</returns> public bool RunDatabaseLevel() { while (true) { ServerCommand command = (ServerCommand)m_stream.ReadUInt8(); switch (command) { case ServerCommand.SetEncodingMethod: try { m_encodingMethod = Library.CreateStreamEncoding <TKey, TValue>(new EncodingDefinition(m_stream)); } catch { m_stream.Write((byte)ServerResponse.UnknownEncodingMethod); m_stream.Flush(); return(false); } m_stream.Write((byte)ServerResponse.EncodingMethodAccepted); m_stream.Flush(); break; case ServerCommand.Read: if (!ProcessRead()) { return(false); } break; case ServerCommand.DisconnectDatabase: m_sortedTreeEngine.Dispose(); m_sortedTreeEngine = null; m_stream.Write((byte)ServerResponse.DatabaseDisconnected); m_stream.Flush(); return(true); case ServerCommand.Write: ProcessWrite(); break; case ServerCommand.CancelRead: break; default: m_stream.Write((byte)ServerResponse.UnknownDatabaseCommand); m_stream.Write((byte)command); m_stream.Flush(); return(false); } } }
internal BulkWriting(StreamingClientDatabase <TKey, TValue> client) { if (client.m_writer != null) { throw new Exception("Duplicate call to StartBulkWriting"); } m_client = client; m_client.m_writer = this; m_stream = m_client.m_stream; m_encodingMode = m_client.m_encodingMode; m_stream.Write((byte)ServerCommand.Write); m_encodingMode.ResetEncoder(); }
public StreamingServerDatabase(RemoteBinaryStream netStream, SnapServerDatabase <TKey, TValue> .ClientDatabase engine) { m_stream = netStream; m_sortedTreeEngine = engine; m_encodingMethod = Library.CreateStreamEncoding <TKey, TValue>(EncodingDefinition.FixedSizeCombinedEncoding); }