diff --git a/ClientConsole/ClientConsole.csproj b/ClientConsole/ClientConsole.csproj index 6fe8082..b2d1eee 100644 --- a/ClientConsole/ClientConsole.csproj +++ b/ClientConsole/ClientConsole.csproj @@ -38,6 +38,12 @@ ..\References\BouncyCastle.Crypto.dll + + E:\dev\Libraries\protobuf\csharp\Debug\v4.0\Google.ProtocolBuffers.dll + + + E:\dev\Libraries\protobuf\csharp\Debug\v4.0\Google.ProtocolBuffers.Serialization.dll + E:\dev\Libraries\log4net\log4net.dll @@ -60,15 +66,19 @@ - + + {93FD4F32-5214-40E3-8E36-5B4E354F10C4} + SocketServer.Client + + {4138075A-49CD-4A46-92CB-DFF64A0BB0B6} SocketServer.Crypto - + {9394CA0C-0014-4C8B-8795-3A5C45B254EE} SocketServer.Messages - + {7C9013CF-CEC4-4F7D-B80D-C6FA2E243CF1} SocketServer.Shared diff --git a/ClientConsole/Program.cs b/ClientConsole/Program.cs index 99a441f..2b5a739 100644 --- a/ClientConsole/Program.cs +++ b/ClientConsole/Program.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using SocketServer; using System.Threading; using System.Net.Sockets; using SocketServer.Shared.Serialization; @@ -11,6 +10,7 @@ using SocketServer.Messages; using SocketServer.Crypto; using Org.BouncyCastle.Math; +using com.BlazeServer.Messages.MessageProtos; namespace ClientConsole { @@ -135,11 +135,11 @@ private static void client_MessageReceived(object sender, MessageEventArgs e) private static void HandleEnableEncryptionResponse(MessageEventArgs e) { EnableEncryptionResponse response = e.Message as EnableEncryptionResponse; - encryptionEnabled = response.Enabled; + encryptionEnabled = response.Success; if (encryptionEnabled) { - e.ClientConnection.Envelope = new EncryptedMessageEnvelope( + e.ClientConnection.Envelope = new EncryptedMessageEnvelope((ICrypto) new SharedKeyCrypto( sa.Parameters, sa.KeyPair, @@ -151,19 +151,19 @@ private static void HandleEnableEncryptionResponse(MessageEventArgs e) private static void HandleServerConnectResponse(MessageEventArgs e) { - ServerConnectionResponse response = e.Message as ServerConnectionResponse; - - sa = new ServerAuthority(new BigInteger(response.DiffieHellmanInfo.P, 16), new BigInteger(response.DiffieHellmanInfo.G, 16)); - serverPublicKey = response.DiffieHellmanInfo.PublicKeyInfo; - - // now enable encryption - e.ClientConnection.Send( - new EnableEncryptionMessage() - { - MessageID = "EnableEncryptionMessage", - Enable = true, - PublicKeyInfo = sa.GenerateEncodedPublicKeyInfo() - }); + //ServerConnectionResponse response = e.Message as ServerConnectionResponse; + + //sa = new ServerAuthority(new BigInteger(response.DiffieHellmanInfo.P, 16), new BigInteger(response.DiffieHellmanInfo.G, 16)); + //serverPublicKey = response.DiffieHellmanInfo.PublicKeyInfo; + + //// now enable encryption + //e.ClientConnection.Send( + // new EnableEncryptionMessage() + // { + // MessageID = "EnableEncryptionMessage", + // Enable = true, + // PublicKeyInfo = sa.GenerateEncodedPublicKeyInfo() + // }); } static void client_ClientClosed(object sender, DisconnectedArgs e) diff --git a/ConsoleApplication1/ConsoleApplication1.csproj b/ConsoleApplication1/ConsoleApplication1.csproj index 70e3fb1..fdf546b 100644 --- a/ConsoleApplication1/ConsoleApplication1.csproj +++ b/ConsoleApplication1/ConsoleApplication1.csproj @@ -56,11 +56,19 @@ - + {93FD4F32-5214-40E3-8E36-5B4E354F10C4} SocketServer.Client - + + {4138075A-49CD-4A46-92CB-DFF64A0BB0B6} + SocketServer.Crypto + + + {9394CA0C-0014-4C8B-8795-3A5C45B254EE} + SocketServer.Messages + + {7C9013CF-CEC4-4F7D-B80D-C6FA2E243CF1} SocketServer.Shared diff --git a/Database/ServerData.sdf b/Database/ServerData.sdf index 2cc6e12..fe9fd6b 100644 Binary files a/Database/ServerData.sdf and b/Database/ServerData.sdf differ diff --git a/NewSocketServer/ChannelEventArgs.cs b/NewSocketServer/ChannelEventArgs.cs deleted file mode 100644 index c9b5bfe..0000000 --- a/NewSocketServer/ChannelEventArgs.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer -{ - public class ChannelEventArgs : EventArgs - { - #region Constructors - public ChannelEventArgs(ClientConnection clientConnection) - : this(clientConnection, null) - { - } - - public ChannelEventArgs(ClientConnection clientConnection, Exception ex) - { - ClientConnection = clientConnection; - Exception = ex; - } - #endregion - - #region Public Properties - /// - /// Gets the channel associated with the raising of this event. - /// - public ClientConnection ClientConnection { get; private set; } - - /// - /// Gets the exception associated with the raising of this event. - /// Will be null if was not raised as the result of an exception. - /// - public Exception Exception { get; private set; } - - /// - /// Gets a value indicating whether there was an exception associated w/ the creation of the event. - /// - /// - /// true if this instance has an Exception; otherwise, false. - /// - public bool HasException { get { return Exception != null; } } - #endregion - - } -} diff --git a/NewSocketServer/ClientConnection.cs b/NewSocketServer/ClientConnection.cs deleted file mode 100644 index 3649301..0000000 --- a/NewSocketServer/ClientConnection.cs +++ /dev/null @@ -1,490 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Net; -using System.IO; -using log4net.Core; -using log4net; - -namespace SocketServer -{ - public class ClientConnection - { - #region Fields - private static readonly ILog logger = LogManager.GetLogger(typeof(ClientConnection)); - private readonly object sendLock = new object(); - - private MessageDispatcher messageHandler; - private Thread responderThread; - - private Exception currentException; - - private volatile bool running; - private volatile IMessage sendResponse; - - private readonly AutoResetEvent sendResponded = new AutoResetEvent(false); - private readonly AutoResetEvent messageSent = new AutoResetEvent(false); - - #endregion - - #region Constructors - /// - /// Creates a controller channel with a default TCP transport - /// - public ClientConnection() - { - Initialize(new SocketTransport(), new PlainEnvelope(), new MessageDispatcher()); - } - - /// - /// Creates a controller channel with the given transport - /// - /// The transport for the channel to communicate over - public ClientConnection(INetworkTransport transport) - { - Initialize(transport, new PlainEnvelope(), new MessageDispatcher()); - } - - /// - /// Creates a controller channel with a default TCP transport that is able to handle incoming messages - /// using the given dispatcher - /// - /// A MessageDispatcher to route messages to appropriate handlers - public ClientConnection(MessageDispatcher dispatcher) - { - Initialize(new SocketTransport(), new PlainEnvelope(), dispatcher); - } - - /// - /// Creates a controller channel with a default TCP transport that is able to handle incoming messages - /// using the given dispatcher - /// - /// A transport used to send/receive messages - /// A MessageDispatcher to route messages to appropriate handlers - public ClientConnection(INetworkTransport transport, MessageDispatcher dispatcher) - { - Initialize(transport, new PlainEnvelope(), dispatcher); - } - - /// - /// Creates a controller channel with a transport that is able to handle incoming messages - /// using the given envelope and dispatcher - /// - /// A transport used to send/receive messages - /// - /// A MessageDispatcher to route messages to appropriate handlers - public ClientConnection(INetworkTransport transport, Envelope envelope, MessageDispatcher dispatcher) - { - Initialize(transport, envelope, dispatcher); - } - - - #endregion - - #region Factory Methods - - /// - /// Creates a controller channel with the given transport, dispatcher, and ControlMode - /// This constructor is used only by the ChannelListener when creating new server channels - /// - /// The transport for the channel to communicate over - /// - /// A MessageDispatcher to route messages to appropriate handlers - /// - public static ClientConnection CreateListenerChannel(INetworkTransport transport, Envelope envelope, MessageDispatcher dispatcher) - { - ClientConnection channel = new ClientConnection(transport, envelope, dispatcher); - - channel.StartReceiveThread(); - return channel; - } - - #endregion - - #region Public Properties - - /// - /// Gets a value indicating whether the channel is connected to the remote endpoint - /// - public bool IsConnected - { - get { return Transport.IsConnected; } - } - /// - /// Gets or sets a unique identifier for this channel. This is not initially the same identifier - /// as the Channel on the other side of the connection. Identifiers are synchronized only when - /// a controller channel changes its mode to become a responder. - /// - public Guid ConnectionID { get; set; } - - /// - /// Allows access to the message dispatcher for this channel in order to register new message handlers - /// - public MessageDispatcher Dispatcher { get; private set; } - - /// - /// Gets the remote endpoint of this connection. - /// - public EndPoint EndPoint { get { return Transport.RemoteEndPoint; } } - - public int MessageResponseTimeout { get; set; } - - public INetworkTransport Transport { get; private set; } - - public Envelope Envelope { get; private set; } - - public string Name { get; set; } - - #endregion - - /// - /// All messages sent should pass through this method in order to get - /// the raw message data and trigger the corresponding event. - /// - /// - /// - private void Serialize(IMessage message, Stream outStream) - { - using (StreamWrapper wrapper = new StreamWrapper(outStream)) - { - Envelope.Serialize(message, wrapper); - RaiseMessageSent(message, wrapper.GetOutputBytes()); - } - } - - /// - /// All messages should be read with this method in order to get - /// the raw message data and trigger the corresponding event. - /// - /// - /// - private IMessage Deserialize(Stream inStream) - { - using (StreamWrapper wrapper = new StreamWrapper(inStream)) - { - IMessage message = Envelope.Deserialize(wrapper); - RaiseMessageReceived(message, wrapper.GetInputBytes()); - return message; - } - } - - private void Initialize(INetworkTransport trans, Envelope envelope, MessageDispatcher disp) - { - ConnectionID = Guid.NewGuid(); - MessageResponseTimeout = Timeout.Infinite; - Transport = trans; - Envelope = envelope; - Dispatcher = disp; - } - /// - /// Starts a thread for Channels in Responder mode to process and handle incoming messages - /// - internal void StartReceiveThread() - { - if (running) return; - - responderThread = new Thread(ProcessMessages) {Name = "ClientConnectionThread", IsBackground = true}; - responderThread.Start(); - } - - internal void StopReceiveThread() - { - running = false; - Pulse(); - // This method is called by the responder thread in response to certain protocol message, like QUIT. - // Because of this, we can't join our own thread to make sure it's halted. - // It's up to the caller of this method to decide whether they need to join the receiveThread - // in order to ensure proper shutdown. - } - - /// - /// Connects this channel to the remote address and port. - /// - /// The server address to connect to. - /// The server port to connect to. - /// A Connected message providing information about the remote server. - public void Connect(string serverAddress, int port) - { - lock (sendLock) - { - // reset this so that a reused channel will wait for message responses - sendResponded.Reset(); - sendResponse = null; - - Transport.Address = serverAddress; - Transport.Port = port; - Transport.Connect(); - - StartReceiveThread(); - } - } - - public void Connect() - { - Connect(Transport.Address, Transport.Port); - } - - /// - /// Shuts down the connection. - /// - public void Disconnect() - { - Disconnect(false); - } - - /// - /// Shuts down the connection. - /// - /// true [forceDisconnect]. - public void Disconnect(bool forceDisconnect) - { - //lock (syncSend) - { - StopReceiveThread(); - - if (Transport == null) - logger.ErrorFormat("Channel '{0}' transport is null in Disconnect", Name); - else - { - Transport.Disconnect(forceDisconnect); - bool joined = responderThread.Join(5000); - // If we can't join the receive thread, disconnect the transport forcefully - if (!joined) - Transport.Disconnect(true); - } - - RaiseChannelClosed(null); - } - } - - private void ProcessMessages() - { - try - { - running = true; - - while (running) - { - ProcessAsynchronousMessages(); - } - } - catch (InvalidOperationException ex) - { - LogChannelError(ex, Level.Finer); - } - catch (IOException ex) - { - LogChannelError(ex, Level.Finer); - } - catch (Exception ex) - { - LogChannelError(ex, Level.Error); - } - finally - { - running = false; - if (Transport.IsConnected) - { - Transport.Disconnect(true); - } - RaiseChannelClosed(currentException); - sendResponded.Set(); // make sure no synchronous sends are still waiting for a response that will never come. - } - } - - private void LogChannelError(Exception ex, Level level) - { - currentException = ex; - - logger.Logger.Log(null, level, "Message processing error on channel '" + Name + "': " + ex.Message, ex); - if (ex.InnerException != null) - logger.Logger.Log(null, level, "InnerException:\n" + ex.InnerException.Message, ex.InnerException); - } - - private void ProcessAsynchronousMessages() - { - IMessage response = null; - IMessage message = null; - try - { - message = Deserialize(Transport.Stream); - message.Validate(); - response = Dispatcher.DispatchMessage(message, this); - } - //catch (UnknownMessageException ex) - //{ - // response = Protocol.ProcessUnknownMessage(ex.Message); - //} - //catch (ProtocolException ex) - //{ - // response = Protocol.ProcessProtocolException(ex.Message); - //} - //catch (InvalidMessageException ex) - //{ - // response = Protocol.ProcessInvalidMessageException(ex.InvalidMessage, ex.Message); - //} - //catch (UnhandledMessageException ex) - //{ - // response = Protocol.ProcessUnhandledMessage(ex.UnhandledMessage); - //} - //catch (MessageProcessingException ex) - //{ - // response = Protocol.ProcessHandlerException(message, ex.Message); - //} - catch (Exception ex) - { - - } - - if (response != null) - Serialize(response, Transport.Stream); - } - - /// - /// Causes the receiver thread to break out of its wait handle to process messages or to quit. - /// - internal void Pulse() - { - messageSent.Set(); - } - - - #region Public Events - /// - /// Event Raised whenever an incoming message is received - /// - public event EventHandler MessageReceived; - - /// - /// Event Raised whenever an outgoing message is sent - /// - public event EventHandler MessageSent; - - /// - /// Event raised when this channel is closed from the remote endpoint - /// - public event EventHandler ChannelClosed; - - #endregion - - #region Event Raisers - private void RaiseMessageSent(IMessage message, byte[] raw) - { - var handler = MessageSent; - if (handler != null) - handler(this, new MessageEventArgs(this, message, raw)); - } - - private void RaiseMessageReceived(IMessage message, byte[] raw) - { - var handler = MessageReceived; - if (handler != null) - handler(this, new MessageEventArgs(this, message, raw)); - } - - private void RaiseChannelClosed(Exception exception) - { - var handler = ChannelClosed; - if (handler != null) - handler(this, new ChannelEventArgs(this, exception)); - } - - #endregion - - /// - /// Used by channel controllers to send a message synchronously to the remote endpoint and get a response - /// - /// - public T Send(IMessage message) where T : IMessage - { - lock (sendLock) - { - if (message == null) - throw new NullReferenceException("Attempt to send a null message"); - - if (!typeof (T).IsAbstract && !typeof (T).IsInterface) - MessageFactory.Register(typeof (T)); - - Serialize(message, Transport.Stream); - messageSent.Set(); - - string endpoint = Transport.RemoteEndPoint == null ? "Unknown" : Transport.RemoteEndPoint.ToString(); - logger.InfoFormat("Sent message {0} to {1}", message.Name, endpoint); - - // wait for a response - bool responded = sendResponded.WaitOne(MessageResponseTimeout, false); - if (!responded) throw new TimeoutException("Timeout waiting for message response"); - - IMessage response = sendResponse; - sendResponse = null; - - if (response is T) - return (T)response; - - //// Let the protocol have a chance at handling an error response. - //string errorString = Protocol.IsError(response); - //if (errorString != null) - // throw new ProtocolException(errorString); - - // If this is not an error message, we need to - // inform the caller that we did not receive what it wanted. - string messageName = response != null ? response.Name : "(no message)"; - throw new ProtocolException(string.Format("Unexpected Message {0} received in response to {1}", messageName, message.Name)); - } - } - - #region IMessageSender Members - - /// - /// Send a message asynchronously, ignoring any response. - /// This method will not throw a protocol exception if an error occurs on the server. - /// This method should be used when a large number of commands need to be sent together. - /// - /// - public void Send(IMessage message) - { - lock (sendLock) - { - if (message == null) - throw new NullReferenceException("Attempt to send a null message"); - - - //Interlocked.Increment(ref ignoreResponses); - Serialize(message, Transport.Stream); - messageSent.Set(); - logger.InfoFormat("Sent message {0}", message.Name); - } - } - - #endregion - - public static T Send(string server, int port, int txRxTimeout, IMessage message) where T : IMessage - { - SocketTransport transport = new SocketTransport { SendTimeout = txRxTimeout, ReceiveTimeout = txRxTimeout }; - ClientConnection connection = new ClientConnection(transport); - connection.Connect(server, port); - T response = connection.Send(message); - connection.Disconnect(); - return response; - } - - public static T Send(string server, int port, IMessage message) where T : IMessage - { - ClientConnection connection = new ClientConnection(); - connection.Connect(server, port); - T response = connection.Send(message); - connection.Disconnect(); - return response; - } - - public static void Send(string server, int port, IMessage message) - { - ClientConnection connection = new ClientConnection(); - connection.Connect(server, port); - connection.Send(message); - connection.Disconnect(); - } - } -} diff --git a/NewSocketServer/ConnectedMessage.cs b/NewSocketServer/ConnectedMessage.cs deleted file mode 100644 index 716ee0a..0000000 --- a/NewSocketServer/ConnectedMessage.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer -{ - public class ConnectedMessage : Message - { - private string serverName = string.Empty; - - public ConnectedMessage() - { - } - - public ConnectedMessage(string serverName) - { - ServerName = serverName; - } - - /// - /// Gets or sets the name of the server that sent this message. This is helpful for - /// client connections to know which server they have connected to. - /// - public string ServerName - { - get { return serverName; } - set { serverName = value; } - } - - /// - /// Indexer to add arbitrary headers to this message. This is useful to provide - /// connection information to incoming client connections. - /// - /// The key string of the header to get or retrieve - /// The header string if it exists, or null otherwise. - public string this[string header] - { - get - { - if (!this.HeaderExists(header)) return null; - return this.GetHeaderValue(header); - } - set { this.AddHeader(header, value); } - } - - public override void MapFromHeaders() - { - if (HeaderExists("SERVERNAME")) - serverName = GetHeaderValue("SERVERNAME"); - } - - public override void MapToHeaders() - { - if (serverName != string.Empty) - AddHeader("SERVERNAME", serverName); - } - } - -} diff --git a/NewSocketServer/Envelope.cs b/NewSocketServer/Envelope.cs deleted file mode 100644 index 937c4c9..0000000 --- a/NewSocketServer/Envelope.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.IO; -using System.Xml.Serialization; - -namespace SocketServer -{ - [XmlInclude(typeof(Encoding))] - public abstract class Envelope - { - protected Envelope() - { - MessageEncoding = Encoding.ASCII; - } - - [XmlIgnore] - public Encoding MessageEncoding { get; set; } - - [XmlElement("MessageEncoding")] - public string MessageEncodingString - { - get - { - if (MessageEncoding is ASCIIEncoding) return "ASCII"; - if (MessageEncoding is UTF8Encoding && MessageEncoding.GetPreamble().Length == 0) return "UTF8"; - if (MessageEncoding is UTF8Encoding && MessageEncoding.GetPreamble().Length == 0) return "UTF8Preamble"; - if (MessageEncoding is UnicodeEncoding) return "Unicode"; - return null; - } - set - { - switch(value) - { - case "ASCII": MessageEncoding = Encoding.ASCII; break; - case "UTF8": MessageEncoding = new UTF8Encoding(false); break; - case "UTF8Preamble": MessageEncoding = new UTF8Encoding(true); break; - case "Unicode": MessageEncoding = Encoding.Unicode; break; - } - } - } - - public abstract void Serialize(IMessage message, Stream stream); - public abstract IMessage Deserialize(Stream stream); - } -} diff --git a/NewSocketServer/FastMethodInvoker.cs b/NewSocketServer/FastMethodInvoker.cs deleted file mode 100644 index ab0940c..0000000 --- a/NewSocketServer/FastMethodInvoker.cs +++ /dev/null @@ -1,147 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Reflection.Emit; -using System.Reflection; - -namespace SocketServer -{ - public delegate object MessageHandlerDelegate(object target, object[] parameters); - - public class FastMethodInvoker - { - - public static MessageHandlerDelegate GetMethodInvoker(object target, MethodInfo methodInfo) - { - DynamicMethod dynamicMethod = new DynamicMethod(string.Empty, typeof(object), new Type[] { typeof(object), typeof(object[]) }, methodInfo.DeclaringType.Module); - ILGenerator il = dynamicMethod.GetILGenerator(); - ParameterInfo[] ps = methodInfo.GetParameters(); - Type[] paramTypes = new Type[ps.Length]; - for (int i = 0; i < paramTypes.Length; i++) - { - if (ps[i].ParameterType.IsByRef) - paramTypes[i] = ps[i].ParameterType.GetElementType(); - else - paramTypes[i] = ps[i].ParameterType; - } - LocalBuilder[] locals = new LocalBuilder[paramTypes.Length]; - - for (int i = 0; i < paramTypes.Length; i++) - { - locals[i] = il.DeclareLocal(paramTypes[i], true); - } - for (int i = 0; i < paramTypes.Length; i++) - { - il.Emit(OpCodes.Ldarg_1); - EmitFastInt(il, i); - il.Emit(OpCodes.Ldelem_Ref); - EmitCastToReference(il, paramTypes[i]); - il.Emit(OpCodes.Stloc, locals[i]); - } - if (!methodInfo.IsStatic) - { - il.Emit(OpCodes.Ldarg_0); - } - for (int i = 0; i < paramTypes.Length; i++) - { - if (ps[i].ParameterType.IsByRef) - il.Emit(OpCodes.Ldloca_S, locals[i]); - else - il.Emit(OpCodes.Ldloc, locals[i]); - } - if (methodInfo.IsStatic) - il.EmitCall(OpCodes.Call, methodInfo, null); - else - il.EmitCall(OpCodes.Callvirt, methodInfo, null); - if (methodInfo.ReturnType == typeof(void)) - il.Emit(OpCodes.Ldnull); - else - EmitBoxIfNeeded(il, methodInfo.ReturnType); - - for (int i = 0; i < paramTypes.Length; i++) - { - if (ps[i].ParameterType.IsByRef) - { - il.Emit(OpCodes.Ldarg_1); - EmitFastInt(il, i); - il.Emit(OpCodes.Ldloc, locals[i]); - if (locals[i].LocalType.IsValueType) - il.Emit(OpCodes.Box, locals[i].LocalType); - il.Emit(OpCodes.Stelem_Ref); - } - } - - il.Emit(OpCodes.Ret); - MessageHandlerDelegate invoker = (MessageHandlerDelegate)dynamicMethod.CreateDelegate(typeof(MessageHandlerDelegate)); - return invoker; - } - - private static void EmitCastToReference(ILGenerator il, System.Type type) - { - if (type.IsValueType) - { - il.Emit(OpCodes.Unbox_Any, type); - } - else - { - il.Emit(OpCodes.Castclass, type); - } - } - - private static void EmitBoxIfNeeded(ILGenerator il, System.Type type) - { - if (type.IsValueType) - { - il.Emit(OpCodes.Box, type); - } - } - - private static void EmitFastInt(ILGenerator il, int value) - { - switch (value) - { - case -1: - il.Emit(OpCodes.Ldc_I4_M1); - return; - case 0: - il.Emit(OpCodes.Ldc_I4_0); - return; - case 1: - il.Emit(OpCodes.Ldc_I4_1); - return; - case 2: - il.Emit(OpCodes.Ldc_I4_2); - return; - case 3: - il.Emit(OpCodes.Ldc_I4_3); - return; - case 4: - il.Emit(OpCodes.Ldc_I4_4); - return; - case 5: - il.Emit(OpCodes.Ldc_I4_5); - return; - case 6: - il.Emit(OpCodes.Ldc_I4_6); - return; - case 7: - il.Emit(OpCodes.Ldc_I4_7); - return; - case 8: - il.Emit(OpCodes.Ldc_I4_8); - return; - } - - if (value > -129 && value < 128) - { - il.Emit(OpCodes.Ldc_I4_S, (SByte)value); - } - else - { - il.Emit(OpCodes.Ldc_I4, value); - } - } - } - -} diff --git a/NewSocketServer/ICommunicationTransport.cs b/NewSocketServer/ICommunicationTransport.cs deleted file mode 100644 index d15b9ad..0000000 --- a/NewSocketServer/ICommunicationTransport.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.IO; - -namespace SocketServer -{ - public interface ICommunicationTransport - { - void Connect(); - void Disconnect(bool force); - bool IsConnected { get; } - bool HasConnection { get; } - Stream Stream { get; } - - int SendTimeout { get; set; } - int ReceiveTimeout { get; set; } - } -} diff --git a/NewSocketServer/IEnvelope.cs b/NewSocketServer/IEnvelope.cs deleted file mode 100644 index 8911df8..0000000 --- a/NewSocketServer/IEnvelope.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.IO; - -namespace SocketServer -{ - public interface IEnvelope - { - Encoding MessageEncoding { get; set; } - - string MessageEncodingString { get; set; } - - void Serialize(IMessage message, Stream stream); - IMessage Deserialize(Stream stream); - - } -} diff --git a/NewSocketServer/IMessage.cs b/NewSocketServer/IMessage.cs deleted file mode 100644 index 90a89dc..0000000 --- a/NewSocketServer/IMessage.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.IO; - -namespace SocketServer -{ - public interface IMessage - { - string MessageID { get; set; } - void Serialize(Stream stream, Encoding encoding); - void Deserialize(Stream stream, Encoding encoding); - void Validate(); - string Name { get; } - } -} diff --git a/NewSocketServer/IMessageHandler.cs b/NewSocketServer/IMessageHandler.cs deleted file mode 100644 index 1b1e2b5..0000000 --- a/NewSocketServer/IMessageHandler.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer -{ - public interface IMessageHandler - { - } -} diff --git a/NewSocketServer/Message.cs b/NewSocketServer/Message.cs deleted file mode 100644 index 3a4894d..0000000 --- a/NewSocketServer/Message.cs +++ /dev/null @@ -1,335 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.IO; - -namespace SocketServer -{ - public abstract class Message : IMessage - { - /// - /// This maps the headers received in a standard http-style message to the value received. - /// - private Dictionary headers = new Dictionary(); - - /// - /// This is a single unnamed parameter that is allowed on the command line. - /// This makes it easy to implement some commands that simply require a flag, i.e. True/False - /// - protected string defaultParameter; - public string DefaultParameter - { - get { return defaultParameter; } - set { defaultParameter = value; } - } - - - /// - /// This stores any binary data received in the payload of the message. - /// - private byte[] data = new byte[0]; - - /// - /// Returns the name of this message. By default returns the name of the class. If the class name ends - /// with "Message", it is ommitted. i.e. SetConfigurationMessage returns "SetConfiguration". - /// - public virtual string Name - { - get - { - string msgName = GetType().Name; - if (msgName.EndsWith("Message", StringComparison.CurrentCultureIgnoreCase)) - { - msgName = msgName.Substring(0, msgName.Length - "Message".Length); - } - return msgName; - } - } - - /// - /// Returns the header value received in this message. - /// - /// The name of the header to query. - /// The header value requested. - protected virtual string GetHeaderValue(string headerName) - { - string headerUppercase = headerName.ToUpper(); - if (!headers.ContainsKey(headerUppercase)) - throw new ProtocolException("Header " + headerUppercase + " not present."); - - return headers[headerUppercase]; - } - - /// - /// Returns the header value received in this message, or the provided default value if the value - /// has not been set. - /// - /// The name of the header to query. - /// The value to return if the header does not exist. - /// The header value, or the provided default - protected virtual T GetHeaderValue(string headerName, T defaultValue) where T : IConvertible - { - if (!HeaderExists(headerName)) - return defaultValue; - - string headerUppercase = headerName.ToUpper(); - if (!headers.ContainsKey(headerUppercase)) - throw new ProtocolException(string.Format("Header {0} not present.", headerUppercase)); - - if (typeof(T).IsEnum) - return (T)Enum.Parse(typeof(T), headers[headerUppercase]); - - return (T)Convert.ChangeType(headers[headerUppercase], defaultValue.GetType()); - } - - /// - /// Returns an ordered list of header values that begin with the provided prefix. - /// - /// The name of the header list. - /// An ordered list of strings representing all the value of the requested list. - protected List GetHeaderList(string prefix) - { - string prefixUppercase = prefix.ToUpper(); - - List keyList = headers.Keys - .Where(key => key.StartsWith(prefixUppercase + "-")) - .ToList(); - - keyList.Sort(String.Compare); - - return keyList.Select(t => headers[t]).ToList(); - } - - /// - /// Adds a list of strings to the headers using the given prefix. On the receiving channel, - /// the list maintains its order if GetHeaderList is used with the same prefix. - /// - /// The name of the list to add - /// The ordered list of strings to add to the headers as a list. - protected void AddHeaderList(string prefix, ICollection list) - { - if (list == null) - return; - - IEnumerator iter = list.GetEnumerator(); - int index = 1; - while (iter.MoveNext()) - { - string number = index.ToString(); - number = number.PadLeft((int)Math.Log10(list.Count) + 1, '0'); - - if (iter.Current == null) - continue; - - AddHeader(string.Format("{0}-{1}", prefix, number), iter.Current.ToString()); - index++; - } - } - - /// - /// Adds a single header to the message with the given name. - /// - /// The name of the header to add. - /// The value of the header to add, as a string. - public virtual void AddHeader(string headerName, T value) - { - if (value == null) - return; - - string val = value.ToString(); - if (string.IsNullOrEmpty(val)) return; - - string uppercase = headerName.ToUpper(); - if (headers.ContainsKey(uppercase)) - headers.Remove(uppercase); - - headers.Add(uppercase, val); - } - - /// - /// Returns whether a particular header exists in this message. - /// - /// The name of the header to query. - /// A bool indicating that the header exists in the message. - protected virtual bool HeaderExists(string headerName) - { - return headers.ContainsKey(headerName.ToUpper()); - } - - /// - /// Returns any data received in this message. - /// - /// The bytes received in the data payload of this message, if any. - protected byte[] GetData() - { - return data; - } - - /// - /// Sets the binary d to be sent with this message. - /// - /// A binary data payload. - protected void SetData(byte[] d) - { - data = d ?? new byte[0]; - } - - #region IMessage Members - - private string messageID; - public string MessageID - { - get { return messageID; } - set { messageID = value; } - } - - - /// - /// Writes this message out to a stream. A simple message contains the header/value list and any binary data. - /// - /// The stream to write to. - /// - public virtual void Serialize(Stream stream, Encoding encoding) - { - lock (headers) - { - MapToHeaders(); - WriteHeaders(stream, encoding); - WriteData(stream); - } - } - - /// - /// Writes the headers of this message out to the stream. - /// - /// - /// - private void WriteHeaders(Stream stream, Encoding encoding) - { - // Add Content-Length: header if there is data present - if (data.Length > 0) - headers["CONTENT-LENGTH"] = data.Length.ToString(); - - if (!string.IsNullOrEmpty(messageID)) - headers["MESSAGE-ID"] = messageID; - - StringBuilder headerBuilder = new StringBuilder(); - foreach (KeyValuePair pair in headers) - { - headerBuilder.Append(pair.Key); - headerBuilder.Append(":"); - headerBuilder.Append(pair.Value); - headerBuilder.Append("\r\n"); - } - - // Add final newline to end headers - headerBuilder.Append("\r\n"); - - // Package up into encoding and write to stream - byte[] headerBytes = encoding.GetBytes(headerBuilder.ToString()); - stream.Write(headerBytes, 0, headerBytes.Length); - } - - /// - /// Writes out any data associated with this message. Empty data is ingored. - /// - /// - private void WriteData(Stream stream) - { - // Data payload gets sent out after the header list - if (data.Length > 0) - stream.Write(data, 0, data.Length); - } - - - /// - /// Reads the message off of the stream. - /// - /// - /// - public virtual void Deserialize(Stream stream, Encoding encoding) - { - lock (headers) - { - ReadHeaders(stream, encoding); - ReadData(stream); - try { MapFromHeaders(); } - catch (Exception ex) - { - throw new ProtocolException(ex.Message); - } - } - } - - /// - /// Reads the map of header/value pairs into this message dictionary. - /// - /// - /// - private void ReadHeaders(Stream stream, Encoding encoding) - { - headers = ProtocolUtils.GetHeaders(stream, encoding); - if (headers.ContainsKey("MESSAGE-ID")) - MessageID = headers["MESSAGE-ID"]; - } - - /// - /// Reads any associated data indicated by the Content-Length header. - /// - /// - private void ReadData(Stream stream) - { - if (headers.ContainsKey("CONTENT-LENGTH")) - { - try - { - int length = int.Parse(headers["CONTENT-LENGTH"]); - data = new byte[length]; - int bytesRead = 0; - while (bytesRead < length) - { - bytesRead += stream.Read(data, bytesRead, length - bytesRead); - } - } - catch (ArgumentNullException ex) - { - throw new ProtocolException(ex.Message); - } - catch (OverflowException ex) - { - throw new ProtocolException(ex.Message); - } - catch (FormatException ex) - { - throw new ProtocolException(ex.Message); - } - } - } - - /// - /// Messages can override this method if there are header requirements that want to be - /// validated before the message is dispatched. If the message does not pass validation, - /// throw a ProtocolException in this method. - /// - /// ProtocolException if the message is invalid. - public virtual void Validate() { } - - #endregion - - /// - /// Override in subclasses to make calls to AddHeader, mapping message fields to headers. - /// - public virtual void MapToHeaders() - { - } - - /// - /// Override in subclases to make calls to GetHeader, mapping headers into message fields. - /// - public virtual void MapFromHeaders() - { - } - } - -} diff --git a/NewSocketServer/MessageDispatcher.cs b/NewSocketServer/MessageDispatcher.cs deleted file mode 100644 index 92abb01..0000000 --- a/NewSocketServer/MessageDispatcher.cs +++ /dev/null @@ -1,302 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using SocketServer.Configuration; -using log4net; -using System.Net; -using System.Reflection; - -namespace SocketServer -{ - public class MessageDispatcher - { - private static readonly ILog logger = LogManager.GetLogger(typeof(MessageDispatcher)); - - #region MessageHandler definition - private class MessageHandler - { - public MessageHandler(MessageHandlerDelegate handler, object target, bool isPrimary, bool needsSourceChannel, bool needsEndpointParameter) - { - Target = target; - Handler = handler; - IsPrimaryHandler = isPrimary; - NeedsSourceChannel = needsSourceChannel; - NeedsSourceEndpoint = needsEndpointParameter; - } - - public MessageHandlerDelegate Handler { get; private set; } - - public bool IsPrimaryHandler { get; private set; } - - public bool NeedsSourceChannel { get; private set; } - - public bool NeedsSourceEndpoint { get; private set; } - - public object Target { get; private set; } - - public IMessage Execute(IMessage msg, object param) - { - if (NeedsSourceChannel) - return (IMessage)Handler(Target, new[] { msg, param }); - if (NeedsSourceEndpoint) - return (IMessage)Handler(Target, new[] { msg, param }); - return (IMessage)Handler(Target, new object[] { msg }); - } - - public override bool Equals(object obj) - { - MessageHandler handler = (MessageHandler)obj; - - return Target == handler.Target && - IsPrimaryHandler == handler.IsPrimaryHandler && - NeedsSourceChannel == handler.NeedsSourceChannel && - NeedsSourceEndpoint == handler.NeedsSourceEndpoint; - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } - } - #endregion - - private readonly Dictionary> messageHandlers = new Dictionary>(); - - public MessageDispatcher() - { - } - - public MessageDispatcher(IMessageHandler handler) - { - RegisterHandlers(handler); - } - - /// - /// Gets the number of messages for which handlers have been registered - /// - public int HandlerCount - { - get - { - int count = 0; - foreach (List list in messageHandlers.Values) - { - count += list.Count; - } - return count; - } - } - - public void AddNullHandler(string messageName) - { - if (!messageHandlers.ContainsKey(messageName)) - messageHandlers.Add(messageName, new List()); - } - - public void RegisterHandlers(IMessageHandler targetObject) - { - Type handlerClassType = targetObject.GetType(); - MethodInfo[] methods = handlerClassType.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - foreach (MethodInfo info in methods) - { - // We only care about methods - if (info.MemberType != MemberTypes.Method) - continue; - - // Check to make sure that the MessageHandlerAttribute is set - object[] attributes = info.GetCustomAttributes(typeof(MessageHandlerAttribute), true); - if (attributes != null && attributes.Length >= 1) - { - // We need to get the Message Type through further reflection - ParameterInfo[] methodParams = info.GetParameters(); - if (methodParams == null || methodParams.Length == 0) - continue; // no parameters, no message handler... move on... - - // We will simply assume that the first parameter is the message - // SHOULD WE THROW AN EXCEPTION IF PARAMETER COUNT IS 0 OR MORE THAN 1 ??? - Type messageType = methodParams[0].ParameterType; - string messageName = ((IMessage)Activator.CreateInstance(messageType)).Name; - // Add the delegate to the list if it doesn't exist - if (!messageHandlers.ContainsKey(messageName)) - { - messageHandlers.Add(messageName, new List()); - } - - // We allow a second parameter to the handler if it is a Channel, so that the method can - // know the source of the message. - bool needsChannelParameter = false; - bool needsEndpointParameter = false; - if (methodParams.Length == 2) - { - if (methodParams[1].ParameterType == typeof(ClientConnection)) - { - needsChannelParameter = true; - } - else if (methodParams[1].ParameterType == typeof(IPEndPoint)) - { - needsEndpointParameter = true; - } - } - - List methodList = messageHandlers[messageName]; - - MessageHandlerAttribute attribute = (MessageHandlerAttribute)attributes[0]; - MessageHandler messageHandler = - new MessageHandler(FastMethodInvoker.GetMethodInvoker(targetObject, info), - targetObject, - attribute.PrimaryHandler, - needsChannelParameter, needsEndpointParameter); - - // Make sure there is only 1 primary handler per message - // We'll make sure the primary handler is the first in the list, for easy checking - if (messageHandler.IsPrimaryHandler && methodList.Count > 0 && methodList[0].IsPrimaryHandler) - throw new InvalidOperationException("Cannot have multiple primary handlers for message: " + messageName); - - // Add the handler to the list. Front of list for primary handlers, back of list for non - if (messageHandler.IsPrimaryHandler) - methodList.Insert(0, messageHandler); - else - methodList.Add(messageHandler); - - // Register message class with MessageFactory - MessageFactory.Register(messageType); - - } - } - } - - public void UnregisterHandlers(IMessageHandler handler) - { - Type handlerClassType = handler.GetType(); - MethodInfo[] methods = handlerClassType.GetMethods(); - foreach (MethodInfo info in methods) - { - // We only care about methods - if (info.MemberType != MemberTypes.Method) - continue; - - // Check to make sure that the MessageHandlerAttribute is set - object[] attributes = info.GetCustomAttributes(typeof(MessageHandlerAttribute), true); - if (attributes != null && attributes.Length >= 1) - { - // We need to get the Message Type through further reflection - ParameterInfo[] methodParams = info.GetParameters(); - if (methodParams == null || methodParams.Length == 0) - continue; // no parameters, no message handler... move on... - - // We will simply assume that the first parameter is the message - // SHOULD WE THROW AN EXCEPTION IF PARAMETER COUNT IS 0 OR MORE THAN 1 ??? - Type messageType = methodParams[0].ParameterType; - string messageName = ((IMessage)Activator.CreateInstance(messageType)).Name; - - // Remove the handler from the list if it exists - if (!messageHandlers.ContainsKey(messageName)) - continue; - - bool needsChannelParameter = false; - bool needsEndpointParameter = false; - if (methodParams.Length == 2) - { - if (methodParams[1].ParameterType == typeof(ClientConnection)) - { - needsChannelParameter = true; - } - else if (methodParams[1].ParameterType == typeof(IPEndPoint)) - { - needsEndpointParameter = true; - } - } - - MessageHandlerAttribute attribute = (MessageHandlerAttribute)attributes[0]; - MessageHandler messageHandler = new MessageHandler( - FastMethodInvoker.GetMethodInvoker(handler, info), - handler, - attribute.PrimaryHandler, - needsChannelParameter, needsEndpointParameter); - - messageHandlers[messageName].Remove(messageHandler); - - if (messageHandlers[messageName].Count == 0) - messageHandlers.Remove(messageName); - } - } - } - - //private static Guid currentConnectionID; - //static public Guid CurrentConnectionID - //{ - // get { return currentConnectionID; } - //} - - private readonly object syncRoot = new object(); - public virtual IMessage DispatchMessage(IMessage msg, ClientConnection channel) - { - return Dispatch(msg, channel); - } - - public IMessage DispatchMessage(IMessage msg, IPEndPoint endpoint) - { - return Dispatch(msg, endpoint); - } - - public IMessage DispatchMessage(IMessage msg) - { - return Dispatch(msg, null); - } - - protected IMessage Dispatch(IMessage msg, object param) - { - lock (syncRoot) - { - //object[] parameters = new object[] { msg }; - if (!messageHandlers.ContainsKey(msg.Name)) - throw new ProtocolException(msg.Name + " missing"); - - List handlerList = messageHandlers[msg.Name]; - - IMessage response = null; - foreach (MessageHandler handler in handlerList) - { - if (handler.IsPrimaryHandler) - { - try - { - response = handler.Execute(msg, param); - } - catch (ProtocolException ex) - { - // Convert older message handlers that throw ProtocolException into MessageProcessingExceptions - throw new ProtocolException(ex.Message); - } - catch (Exception ex) - { - // Log and convert to MessageProcessingException - logger.Error("Error processing message " + msg.Name, ex); - throw new ProtocolException(ex.Message); - } - } - else - { - try - { - handler.Execute(msg, param); - } - catch (Exception) - { - logger.WarnFormat("Unhandled exception in non-primary message handler for message: {0} (ID:{1}).", msg.Name, msg.MessageID); - } - } - } - return response; - } - } - - public bool HasDispatcher(IMessage msg) - { - return messageHandlers.ContainsKey(msg.Name); - } - - } - -} diff --git a/NewSocketServer/MessageEventArgs.cs b/NewSocketServer/MessageEventArgs.cs deleted file mode 100644 index 9af227f..0000000 --- a/NewSocketServer/MessageEventArgs.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer -{ - public class MessageEventArgs : EventArgs - { - public MessageEventArgs(ClientConnection source, IMessage message, byte[] raw) - { - ClientConnection = source; - Message = message; - RawMessage = raw; - IsError = false; - ErrorMessage = string.Empty; - } - - public ClientConnection ClientConnection { get; protected set; } - public IMessage Message { get; protected set; } - public byte[] RawMessage { get; protected set; } - public bool IsError { get; set; } - public string ErrorMessage { get; set; } - } -} diff --git a/NewSocketServer/MessageFactory.cs b/NewSocketServer/MessageFactory.cs deleted file mode 100644 index 6c81f5c..0000000 --- a/NewSocketServer/MessageFactory.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using log4net; -using log4net.Core; - -namespace SocketServer -{ - public class MessageFactory - { - private static readonly ILog logger = LogManager.GetLogger(typeof(MessageFactory)); - - private static readonly Dictionary messageMap = new Dictionary(); - - /// - /// Creates a new instance of a class that implements IMessage - /// - /// The registered name of the message to be created - /// An IMessage object, or null if message does not exist - public static IMessage Create(string messageName) - { - lock (messageMap) - { - string nameUpper = messageName.ToUpper(); - if (messageMap.ContainsKey(nameUpper)) - return Activator.CreateInstance(messageMap[nameUpper]) as IMessage; - - return null; - } - } - - /// - /// Registers a new IMessage-derived class as available to be created by the factory - /// - /// - /// The IMessage-derived type to be registered - public static void Register(string messageName, Type t) - { - if (t == null) return; - lock (messageMap) - { - if (messageMap.ContainsKey(messageName.ToUpper())) return; - messageMap.Add(messageName.ToUpper(), t); - logger.Logger.Log(null, Level.Finer, "Registered Message: " + messageName, null); // TODO: change to logger.Log - } - } - - public static void Register(Type t) - { - try - { - string messageName = ((IMessage)Activator.CreateInstance(t)).Name; - Register(messageName, t); - } - catch (Exception) - { - throw new InvalidOperationException("Type " + t + " does not implement IMessage"); - } - } - - public static void Remove(string messageName) - { - lock (messageMap) - { - if (messageMap.ContainsKey(messageName.ToUpper())) - messageMap.Remove(messageName.ToUpper()); - } - } - - public static void Remove(Type t) - { - try - { - string messageName = ((IMessage)Activator.CreateInstance(t)).Name.ToUpper(); - Remove(messageName); - } - catch (Exception) - { - throw new InvalidOperationException("Type " + t + " does not implement IMessage"); - } - } - - public static void RemoveAll() - { - lock (messageMap) - { - messageMap.Clear(); - } - } - } -} diff --git a/NewSocketServer/MessageHandlerAttribute.cs b/NewSocketServer/MessageHandlerAttribute.cs deleted file mode 100644 index a209125..0000000 --- a/NewSocketServer/MessageHandlerAttribute.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer -{ - [AttributeUsage(AttributeTargets.Method)] - public sealed class MessageHandlerAttribute : Attribute - { - - // This value indicates whether the method using this attribute is the primary - // message handler. Primary message handlers are allowed to respond to messages. - // Non-primary handlers are only allowed to read messages. - private bool isPrimary = true; - public bool PrimaryHandler - { - get { return isPrimary; } - set { isPrimary = value; } - } - } -} diff --git a/NewSocketServer/NewSocketServer.csproj b/NewSocketServer/NewSocketServer.csproj deleted file mode 100644 index e7deba9..0000000 --- a/NewSocketServer/NewSocketServer.csproj +++ /dev/null @@ -1,101 +0,0 @@ - - - - Debug - x86 - 8.0.30703 - 2.0 - {8B4A5199-FDC9-49F6-914B-EE8806E18D27} - Exe - Properties - SocketServer - NewSocketServer - v4.0 - - - 512 - - - x86 - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - x86 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\References\log4net.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {4138075A-49CD-4A46-92CB-DFF64A0BB0B6} - SocketServer.Crypto - - - - - - - - \ No newline at end of file diff --git a/NewSocketServer/PlainEnvelope.cs b/NewSocketServer/PlainEnvelope.cs deleted file mode 100644 index 98d7767..0000000 --- a/NewSocketServer/PlainEnvelope.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.IO; - -namespace SocketServer -{ - public class PlainEnvelope : Envelope - { - public override void Serialize(IMessage message, Stream stream) - { - Message msg = message as Message; - StringBuilder str = new StringBuilder(); - str.Append(msg.Name); - if (!string.IsNullOrEmpty(msg.DefaultParameter)) - str.Append(" " + msg.DefaultParameter); - - str.Append("\r\n"); - byte[] nameBytes = MessageEncoding.GetBytes(str.ToString()); - stream.Write(nameBytes, 0, nameBytes.Length); - message.Serialize(stream, MessageEncoding); - stream.Flush(); - } - - public override IMessage Deserialize(Stream stream) - { - // The command should be on its own line - string commandLine = ProtocolUtils.ReadLine(stream, MessageEncoding); - while (commandLine.Length == 0) - commandLine = ProtocolUtils.ReadLine(stream, MessageEncoding); - - string[] commandTokens = commandLine.Split(" ".ToCharArray()); - IMessage message = MessageFactory.Create(commandTokens[0]); - - if (message != null) - { - if (commandTokens.Length >= 2) - { - Message msg = message as Message; - msg.DefaultParameter = commandTokens[1]; - } - message.Deserialize(stream, MessageEncoding); - } - else - { - // NullMessage nullMsg = new NullMessage(); - // nullMsg.Deserialize(stream, MessageEncoding); - throw new ProtocolException("Unknown message: " + commandLine); - } - - return message; - } - } -} diff --git a/NewSocketServer/Program.cs b/NewSocketServer/Program.cs deleted file mode 100644 index d35a276..0000000 --- a/NewSocketServer/Program.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer -{ - class Program - { - static void Main(string[] args) - { - } - } -} diff --git a/NewSocketServer/Properties/AssemblyInfo.cs b/NewSocketServer/Properties/AssemblyInfo.cs deleted file mode 100644 index e673ce6..0000000 --- a/NewSocketServer/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("NewSocketServer")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("NewSocketServer")] -[assembly: AssemblyCopyright("Copyright © 2012")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("0cbf7b9c-28f7-45db-a965-07513642b3ce")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/NewSocketServer/ProtocolException.cs b/NewSocketServer/ProtocolException.cs deleted file mode 100644 index 24bd94c..0000000 --- a/NewSocketServer/ProtocolException.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer -{ - public class ProtocolException : Exception - { - public ProtocolException(string message) - : base(message) - { - } - } -} diff --git a/NewSocketServer/ProtocolUtils.cs b/NewSocketServer/ProtocolUtils.cs deleted file mode 100644 index 631bf33..0000000 --- a/NewSocketServer/ProtocolUtils.cs +++ /dev/null @@ -1,118 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.IO; - -namespace SocketServer -{ - public static class ProtocolUtils - { - private static readonly Regex headerPattern = new Regex("(.+?):(.*)"); - - // Retreives all header lines up to the \r\n\r\n, and returns an - // array container each header line, without the \r\n. - public static Dictionary GetHeaders(Stream stream, Encoding encoding) - { - string[] headerLines = GetHeaderLines(stream, encoding); - return ParseHeaders(headerLines); - } - - public static String[] GetHeaderLines(Stream stream, Encoding encoding) - { - List headers = new List(); - while (true) - { - String header; - try - { - header = ReadLine(stream, encoding); - } - catch (Exception) - { - break; - } - - if (header.Length == 0) - { - // Empty Line. End of headers - break; - } - // Else we add the header to our list. - headers.Add(header); - } - return headers.ToArray(); - } - - // Parses the array of header strings, and returns the values in a - // dictionary for quick hashtable lookups. - public static Dictionary ParseHeaders(string[] headers, int startIndex, int endIndex) - { - Dictionary headerDict = new Dictionary(); - - for (int i = startIndex; i < endIndex; i++) - { - Match match = headerPattern.Match(headers[i]); - if (match.Success && (match.Groups.Count == 3)) - { - if (headerDict.ContainsKey(match.Groups[1].Value.ToUpper())) - { - headerDict.Remove(match.Groups[1].Value.ToUpper()); - } - headerDict.Add(match.Groups[1].Value.ToUpper(), match.Groups[2].Value); - } - } - return headerDict; - } - - public static Dictionary ParseHeaders(string[] headers) - { - return ParseHeaders(headers, 0, headers.Length); - } - - /// - /// Reads a single line from the Stream - /// - /// The stream to read from - /// The encoding to interpret the text - /// The line read, without the newline character(s) - public static string ReadLine(Stream stream, Encoding encoding) - { - byte[] buffer = new byte[8]; // max character bytes - int bufferPos = 0; - - StringBuilder line = new StringBuilder(100); - int c; - bool lineRead = false; - Decoder decoder = encoding.GetDecoder(); - while ((c = stream.ReadByte()) != -1) - { - if (c == '\n') - { - lineRead = true; - - // strip any '\r' immediately preceding - if ((line.Length > 0) && (line[line.Length - 1] == '\r')) - { - line.Remove(line.Length - 1, 1); - } - - // and break - break; - } - if (bufferPos >= buffer.Length) - throw new InvalidDataException("Invalid character read from stream."); - buffer[bufferPos++] = (byte)c; - if (decoder.GetCharCount(buffer, 0, bufferPos) != 1) continue; - line.Append(encoding.GetChars(buffer, 0, bufferPos)); - bufferPos = 0; - } - if (c == -1 && lineRead == false) - throw new IOException("Stream shut down while reading line."); - - return line.ToString(); - } - } - -} diff --git a/NewSocketServer/SocketListener.cs b/NewSocketServer/SocketListener.cs deleted file mode 100644 index 918a062..0000000 --- a/NewSocketServer/SocketListener.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Net; -using System.Net.Sockets; -using System.Threading; - -namespace SocketServer -{ - public class SocketListener : INetworkListener - { - #region Fields - readonly IPAddress address = IPAddress.Any; - private TcpListener listener; - - private volatile bool listening; - - private TcpClient newClient; - private readonly AutoResetEvent newConnection = new AutoResetEvent(false); - private readonly AutoResetEvent shutdown = new AutoResetEvent(false); - #endregion - - #region Constructors - public SocketListener() - { - } - - public SocketListener(IPAddress address) - { - this.address = address; - } - #endregion - - public void Initialize(int port) - { - listener = new TcpListener(address, port); - } - public void Start() - { - listener.Start(); - listening = true; - } - - public void Stop() - { - listening = false; - listener.Stop(); - shutdown.Set(); - } - public INetworkTransport AcceptClient() - { - newClient = null; - // perform all accept calls asynchronously - listener.BeginAcceptTcpClient(WaitForConnection, null); - - // block until a connection is accepted, OR the shutdown event is given - int index = WaitHandle.WaitAny(new WaitHandle[] { shutdown, newConnection }); - if (index == 1 && newClient != null) - { - return new SocketTransport(newClient); - } - throw new SocketException(); - } - - private void WaitForConnection(IAsyncResult ar) - { - try - { - newClient = listener.EndAcceptTcpClient(ar); - } - catch(ObjectDisposedException) - { - if (!listening) return; - - throw; - } - - newConnection.Set(); - } - } -} diff --git a/NewSocketServer/SocketTransport.cs b/NewSocketServer/SocketTransport.cs deleted file mode 100644 index 665c0df..0000000 --- a/NewSocketServer/SocketTransport.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Net.Sockets; -using log4net; -using System.IO; -using System.Net; - -namespace SocketServer -{ - public class SocketTransport : INetworkTransport - { - TcpClient client; - private static readonly ILog logger = LogManager.GetLogger(typeof(SocketTransport)); - - public SocketTransport() - { - } - - internal SocketTransport(TcpClient client) - { - this.client = client; - } - - public bool HasConnection { get { return false; } } - public string Address { get; set; } - public int Port { get; set; } - - public void Connect() - { - client = new TcpClient(Address, Port) - { - SendTimeout = sendTimeout, - ReceiveTimeout = receiveTimeout - }; - } - - public void Disconnect(bool force) - { - if (force) client.Close(); - else if (client.Connected) client.Client.Shutdown(SocketShutdown.Send); - } - - public bool IsConnected - { - get - { - return client != null && client.Connected; - } - } - - public bool NoDelay - { - get - { - return client.NoDelay; - } - set - { - client.NoDelay = value; - } - } - - public Stream Stream - { - get { return client.GetStream(); } - } - - public EndPoint RemoteEndPoint - { - get - { - return client.Client.RemoteEndPoint; - } - } - - private int sendTimeout; - public int SendTimeout - { - get { return sendTimeout; } - set - { - sendTimeout = value; - if (client != null && client.Client != null && client.Connected) client.SendTimeout = value; - } - } - - private int receiveTimeout; - public int ReceiveTimeout - { - get { return receiveTimeout; } - set - { - receiveTimeout = value; - if (client != null && client.Client != null && client.Connected) client.ReceiveTimeout = value; - } - } - } -} diff --git a/NewSocketServer/StreamWrapper.cs b/NewSocketServer/StreamWrapper.cs deleted file mode 100644 index b2e9178..0000000 --- a/NewSocketServer/StreamWrapper.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.IO; - -namespace SocketServer -{ - public class StreamWrapper : Stream - { - #region Fields - - private readonly MemoryStream inStream; - private readonly MemoryStream outStream; - - private bool disposed; - - #endregion Fields - - #region Constructors - - public StreamWrapper(Stream stream) - { - Stream = stream; - inStream = new MemoryStream(); - outStream = new MemoryStream(); - } - - #endregion Constructors - - #region Properties - - public override bool CanRead - { - get { return Stream.CanRead; } - } - - public override bool CanSeek - { - get { return Stream.CanSeek; } - } - - public override bool CanWrite - { - get { return Stream.CanWrite; } - } - - public override long Length - { - get { return Stream.Length; } - } - - public override long Position - { - get - { - return Stream.Position; - } - set - { - Stream.Position = value; - } - } - - public Stream Stream - { - get; - private set; - } - - #endregion Properties - - #region Methods - - public override void Flush() - { - Stream.Flush(); - } - - public byte[] GetInputBytes() - { - return inStream.ToArray(); - } - - public byte[] GetOutputBytes() - { - return outStream.ToArray(); - } - - public override int Read(byte[] buffer, int offset, int count) - { - byte[] data = new byte[count]; - // Read into our temp data structure - int read = Stream.Read(data, 0, count); - // Make sure we write this data into the copy buffer - inStream.Write(data, 0, read); - // now copy this data into the output buffer - data.CopyTo(buffer, offset); - return read; - } - - public override long Seek(long offset, SeekOrigin origin) - { - return Stream.Seek(offset, origin); - } - - public override void SetLength(long value) - { - Stream.SetLength(value); - } - - public override void Write(byte[] buffer, int offset, int count) - { - Stream.Write(buffer, offset, count); - outStream.Write(buffer, offset, count); - } - - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - if (disposing && !disposed) - { - inStream.Dispose(); - outStream.Dispose(); - disposed = true; - } - } - - #endregion Methods - } - -} diff --git a/NewSocketServer/app.config b/NewSocketServer/app.config deleted file mode 100644 index e365603..0000000 --- a/NewSocketServer/app.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/SocketService.Client/ClientEngine.cs b/SocketServer.Client/ClientEngine.cs similarity index 100% rename from SocketService.Client/ClientEngine.cs rename to SocketServer.Client/ClientEngine.cs diff --git a/SocketService.Client/Composition/IPluginMetaData.cs b/SocketServer.Client/Composition/IPluginMetaData.cs similarity index 100% rename from SocketService.Client/Composition/IPluginMetaData.cs rename to SocketServer.Client/Composition/IPluginMetaData.cs diff --git a/SocketService.Client/Composition/PluginMetaDataAttribute.cs b/SocketServer.Client/Composition/PluginMetaDataAttribute.cs similarity index 100% rename from SocketService.Client/Composition/PluginMetaDataAttribute.cs rename to SocketServer.Client/Composition/PluginMetaDataAttribute.cs diff --git a/SocketService.Client/Crypto/BigInteger.cs b/SocketServer.Client/Crypto/BigInteger.cs similarity index 100% rename from SocketService.Client/Crypto/BigInteger.cs rename to SocketServer.Client/Crypto/BigInteger.cs diff --git a/SocketService.Client/Crypto/CentralAuthority.cs b/SocketServer.Client/Crypto/CentralAuthority.cs similarity index 100% rename from SocketService.Client/Crypto/CentralAuthority.cs rename to SocketServer.Client/Crypto/CentralAuthority.cs diff --git a/SocketService.Client/Crypto/Crc32.cs b/SocketServer.Client/Crypto/Crc32.cs similarity index 100% rename from SocketService.Client/Crypto/Crc32.cs rename to SocketServer.Client/Crypto/Crc32.cs diff --git a/SocketService.Client/Crypto/DiffieHellmanKey.cs b/SocketServer.Client/Crypto/DiffieHellmanKey.cs similarity index 100% rename from SocketService.Client/Crypto/DiffieHellmanKey.cs rename to SocketServer.Client/Crypto/DiffieHellmanKey.cs diff --git a/SocketService.Client/Crypto/DiffieHellmanProvider.cs b/SocketServer.Client/Crypto/DiffieHellmanProvider.cs similarity index 100% rename from SocketService.Client/Crypto/DiffieHellmanProvider.cs rename to SocketServer.Client/Crypto/DiffieHellmanProvider.cs diff --git a/SocketService.Client/Crypto/StringExtentions.cs b/SocketServer.Client/Crypto/StringExtentions.cs similarity index 100% rename from SocketService.Client/Crypto/StringExtentions.cs rename to SocketServer.Client/Crypto/StringExtentions.cs diff --git a/SocketService.Client/Crypto/StrongNumberProvider.cs b/SocketServer.Client/Crypto/StrongNumberProvider.cs similarity index 100% rename from SocketService.Client/Crypto/StrongNumberProvider.cs rename to SocketServer.Client/Crypto/StrongNumberProvider.cs diff --git a/SocketService.Client/Crypto/Wrapper.cs b/SocketServer.Client/Crypto/Wrapper.cs similarity index 100% rename from SocketService.Client/Crypto/Wrapper.cs rename to SocketServer.Client/Crypto/Wrapper.cs diff --git a/SocketService.Client/Data/ClientRoom.cs b/SocketServer.Client/Data/ClientRoom.cs similarity index 100% rename from SocketService.Client/Data/ClientRoom.cs rename to SocketServer.Client/Data/ClientRoom.cs diff --git a/SocketService.Client/Data/ClientUser.cs b/SocketServer.Client/Data/ClientUser.cs similarity index 100% rename from SocketService.Client/Data/ClientUser.cs rename to SocketServer.Client/Data/ClientUser.cs diff --git a/SocketService.Client/Data/Domain/Room.cs b/SocketServer.Client/Data/Domain/Room.cs similarity index 100% rename from SocketService.Client/Data/Domain/Room.cs rename to SocketServer.Client/Data/Domain/Room.cs diff --git a/SocketService.Client/Data/Domain/User.cs b/SocketServer.Client/Data/Domain/User.cs similarity index 100% rename from SocketService.Client/Data/Domain/User.cs rename to SocketServer.Client/Data/Domain/User.cs diff --git a/SocketService.Client/Data/RoomRepository.cs b/SocketServer.Client/Data/RoomRepository.cs similarity index 100% rename from SocketService.Client/Data/RoomRepository.cs rename to SocketServer.Client/Data/RoomRepository.cs diff --git a/SocketService.Client/Data/UserRepository.cs b/SocketServer.Client/Data/UserRepository.cs similarity index 100% rename from SocketService.Client/Data/UserRepository.cs rename to SocketServer.Client/Data/UserRepository.cs diff --git a/SocketService.Client/Event/IEvent.cs b/SocketServer.Client/Event/IEvent.cs similarity index 100% rename from SocketService.Client/Event/IEvent.cs rename to SocketServer.Client/Event/IEvent.cs diff --git a/SocketService.Client/Event/JoinRoomEvent.cs b/SocketServer.Client/Event/JoinRoomEvent.cs similarity index 100% rename from SocketService.Client/Event/JoinRoomEvent.cs rename to SocketServer.Client/Event/JoinRoomEvent.cs diff --git a/SocketService.Client/Event/LeaveRoomEvent.cs b/SocketServer.Client/Event/LeaveRoomEvent.cs similarity index 100% rename from SocketService.Client/Event/LeaveRoomEvent.cs rename to SocketServer.Client/Event/LeaveRoomEvent.cs diff --git a/SocketService.Client/Event/PublicMessageEvent.cs b/SocketServer.Client/Event/PublicMessageEvent.cs similarity index 100% rename from SocketService.Client/Event/PublicMessageEvent.cs rename to SocketServer.Client/Event/PublicMessageEvent.cs diff --git a/SocketService.Client/Event/RoomUserUpdateEvent.cs b/SocketServer.Client/Event/RoomUserUpdateEvent.cs similarity index 100% rename from SocketService.Client/Event/RoomUserUpdateEvent.cs rename to SocketServer.Client/Event/RoomUserUpdateEvent.cs diff --git a/SocketService.Client/Event/RoomVariableUpdateEvent.cs b/SocketServer.Client/Event/RoomVariableUpdateEvent.cs similarity index 100% rename from SocketService.Client/Event/RoomVariableUpdateEvent.cs rename to SocketServer.Client/Event/RoomVariableUpdateEvent.cs diff --git a/SocketService.Client/Events/CommunicationErrorArgs.cs b/SocketServer.Client/Events/CommunicationErrorArgs.cs similarity index 100% rename from SocketService.Client/Events/CommunicationErrorArgs.cs rename to SocketServer.Client/Events/CommunicationErrorArgs.cs diff --git a/SocketService.Client/Events/ConnectionEventArgs.cs b/SocketServer.Client/Events/ConnectionEventArgs.cs similarity index 100% rename from SocketService.Client/Events/ConnectionEventArgs.cs rename to SocketServer.Client/Events/ConnectionEventArgs.cs diff --git a/SocketService.Client/Events/JoinRoomEvent.cs b/SocketServer.Client/Events/JoinRoomEvent.cs similarity index 100% rename from SocketService.Client/Events/JoinRoomEvent.cs rename to SocketServer.Client/Events/JoinRoomEvent.cs diff --git a/SocketService.Client/Events/JoinRoomEventArgs.cs b/SocketServer.Client/Events/JoinRoomEventArgs.cs similarity index 100% rename from SocketService.Client/Events/JoinRoomEventArgs.cs rename to SocketServer.Client/Events/JoinRoomEventArgs.cs diff --git a/SocketService.Client/Events/LeaveRoomEventArgs.cs b/SocketServer.Client/Events/LeaveRoomEventArgs.cs similarity index 100% rename from SocketService.Client/Events/LeaveRoomEventArgs.cs rename to SocketServer.Client/Events/LeaveRoomEventArgs.cs diff --git a/SocketService.Client/Events/LoginResponseEventArgs.cs b/SocketServer.Client/Events/LoginResponseEventArgs.cs similarity index 100% rename from SocketService.Client/Events/LoginResponseEventArgs.cs rename to SocketServer.Client/Events/LoginResponseEventArgs.cs diff --git a/SocketService.Client/Events/RoomUserUpdateEventArgs.cs b/SocketServer.Client/Events/RoomUserUpdateEventArgs.cs similarity index 100% rename from SocketService.Client/Events/RoomUserUpdateEventArgs.cs rename to SocketServer.Client/Events/RoomUserUpdateEventArgs.cs diff --git a/SocketService.Client/Events/RoomVariableUpdateArgs.cs b/SocketServer.Client/Events/RoomVariableUpdateArgs.cs similarity index 100% rename from SocketService.Client/Events/RoomVariableUpdateArgs.cs rename to SocketServer.Client/Events/RoomVariableUpdateArgs.cs diff --git a/SocketService.Client/Events/ServerEventEventArgs.cs b/SocketServer.Client/Events/ServerEventEventArgs.cs similarity index 100% rename from SocketService.Client/Events/ServerEventEventArgs.cs rename to SocketServer.Client/Events/ServerEventEventArgs.cs diff --git a/SocketService.Client/Events/ServerMessageReceivedArgs.cs b/SocketServer.Client/Events/ServerMessageReceivedArgs.cs similarity index 100% rename from SocketService.Client/Events/ServerMessageReceivedArgs.cs rename to SocketServer.Client/Events/ServerMessageReceivedArgs.cs diff --git a/SocketService.Client/Events/ServerResponseEventArgs.cs b/SocketServer.Client/Events/ServerResponseEventArgs.cs similarity index 100% rename from SocketService.Client/Events/ServerResponseEventArgs.cs rename to SocketServer.Client/Events/ServerResponseEventArgs.cs diff --git a/SocketService.Client/Manager/ManagerHelper.cs b/SocketServer.Client/Manager/ManagerHelper.cs similarity index 100% rename from SocketService.Client/Manager/ManagerHelper.cs rename to SocketServer.Client/Manager/ManagerHelper.cs diff --git a/SocketService.Client/Manager/RoomManager.cs b/SocketServer.Client/Manager/RoomManager.cs similarity index 100% rename from SocketService.Client/Manager/RoomManager.cs rename to SocketServer.Client/Manager/RoomManager.cs diff --git a/SocketService.Client/Manager/UserManager.cs b/SocketServer.Client/Manager/UserManager.cs similarity index 100% rename from SocketService.Client/Manager/UserManager.cs rename to SocketServer.Client/Manager/UserManager.cs diff --git a/SocketService.Client/Plugin/IPlugin.cs b/SocketServer.Client/Plugin/IPlugin.cs similarity index 100% rename from SocketService.Client/Plugin/IPlugin.cs rename to SocketServer.Client/Plugin/IPlugin.cs diff --git a/SocketService.Client/Plugin/PluginBase.cs b/SocketServer.Client/Plugin/PluginBase.cs similarity index 100% rename from SocketService.Client/Plugin/PluginBase.cs rename to SocketServer.Client/Plugin/PluginBase.cs diff --git a/SocketService.Client/Plugin/UserPublicMessageContext.cs b/SocketServer.Client/Plugin/UserPublicMessageContext.cs similarity index 100% rename from SocketService.Client/Plugin/UserPublicMessageContext.cs rename to SocketServer.Client/Plugin/UserPublicMessageContext.cs diff --git a/SocketService.Client/Properties/AssemblyInfo.cs b/SocketServer.Client/Properties/AssemblyInfo.cs similarity index 100% rename from SocketService.Client/Properties/AssemblyInfo.cs rename to SocketServer.Client/Properties/AssemblyInfo.cs diff --git a/SocketService.Client/Request/ClientRequestWrapper.cs b/SocketServer.Client/Request/ClientRequestWrapper.cs similarity index 100% rename from SocketService.Client/Request/ClientRequestWrapper.cs rename to SocketServer.Client/Request/ClientRequestWrapper.cs diff --git a/SocketService.Client/Request/CreateRoomRequest.cs b/SocketServer.Client/Request/CreateRoomRequest.cs similarity index 100% rename from SocketService.Client/Request/CreateRoomRequest.cs rename to SocketServer.Client/Request/CreateRoomRequest.cs diff --git a/SocketService.Client/Request/CreateRoomVariableRequest.cs b/SocketServer.Client/Request/CreateRoomVariableRequest.cs similarity index 100% rename from SocketService.Client/Request/CreateRoomVariableRequest.cs rename to SocketServer.Client/Request/CreateRoomVariableRequest.cs diff --git a/SocketService.Client/Request/DeleteRoomVariableRequest.cs b/SocketServer.Client/Request/DeleteRoomVariableRequest.cs similarity index 100% rename from SocketService.Client/Request/DeleteRoomVariableRequest.cs rename to SocketServer.Client/Request/DeleteRoomVariableRequest.cs diff --git a/SocketService.Client/Request/GetCentralAuthorityRequest.cs b/SocketServer.Client/Request/GetCentralAuthorityRequest.cs similarity index 100% rename from SocketService.Client/Request/GetCentralAuthorityRequest.cs rename to SocketServer.Client/Request/GetCentralAuthorityRequest.cs diff --git a/SocketService.Client/Request/GetRoomVariableRequest.cs b/SocketServer.Client/Request/GetRoomVariableRequest.cs similarity index 100% rename from SocketService.Client/Request/GetRoomVariableRequest.cs rename to SocketServer.Client/Request/GetRoomVariableRequest.cs diff --git a/SocketService.Client/Request/LoginRequest.cs b/SocketServer.Client/Request/LoginRequest.cs similarity index 100% rename from SocketService.Client/Request/LoginRequest.cs rename to SocketServer.Client/Request/LoginRequest.cs diff --git a/SocketService.Client/Request/NegotiateKeysRequest.cs b/SocketServer.Client/Request/NegotiateKeysRequest.cs similarity index 100% rename from SocketService.Client/Request/NegotiateKeysRequest.cs rename to SocketServer.Client/Request/NegotiateKeysRequest.cs diff --git a/SocketService.Client/Request/PublicMessageRequest.cs b/SocketServer.Client/Request/PublicMessageRequest.cs similarity index 100% rename from SocketService.Client/Request/PublicMessageRequest.cs rename to SocketServer.Client/Request/PublicMessageRequest.cs diff --git a/SocketService.Client/Request/UpdateRoomVariableRequest.cs b/SocketServer.Client/Request/UpdateRoomVariableRequest.cs similarity index 100% rename from SocketService.Client/Request/UpdateRoomVariableRequest.cs rename to SocketServer.Client/Request/UpdateRoomVariableRequest.cs diff --git a/SocketService.Client/Response/ConnectionResponse.cs b/SocketServer.Client/Response/ConnectionResponse.cs similarity index 100% rename from SocketService.Client/Response/ConnectionResponse.cs rename to SocketServer.Client/Response/ConnectionResponse.cs diff --git a/SocketService.Client/Response/DeleteRoomVariableResponse.cs b/SocketServer.Client/Response/DeleteRoomVariableResponse.cs similarity index 100% rename from SocketService.Client/Response/DeleteRoomVariableResponse.cs rename to SocketServer.Client/Response/DeleteRoomVariableResponse.cs diff --git a/SocketService.Client/Response/GetRoomVariableResponse.cs b/SocketServer.Client/Response/GetRoomVariableResponse.cs similarity index 100% rename from SocketService.Client/Response/GetRoomVariableResponse.cs rename to SocketServer.Client/Response/GetRoomVariableResponse.cs diff --git a/SocketService.Client/Response/IResponse.cs b/SocketServer.Client/Response/IResponse.cs similarity index 100% rename from SocketService.Client/Response/IResponse.cs rename to SocketServer.Client/Response/IResponse.cs diff --git a/SocketService.Client/Response/ListUsersInRoomResponse.cs b/SocketServer.Client/Response/ListUsersInRoomResponse.cs similarity index 100% rename from SocketService.Client/Response/ListUsersInRoomResponse.cs rename to SocketServer.Client/Response/ListUsersInRoomResponse.cs diff --git a/SocketService.Client/Response/LoginResponse.cs b/SocketServer.Client/Response/LoginResponse.cs similarity index 100% rename from SocketService.Client/Response/LoginResponse.cs rename to SocketServer.Client/Response/LoginResponse.cs diff --git a/SocketService.Client/Response/NegotiateKeysResponse.cs b/SocketServer.Client/Response/NegotiateKeysResponse.cs similarity index 100% rename from SocketService.Client/Response/NegotiateKeysResponse.cs rename to SocketServer.Client/Response/NegotiateKeysResponse.cs diff --git a/SocketService.Client/Response/ServerMessage.cs b/SocketServer.Client/Response/ServerMessage.cs similarity index 100% rename from SocketService.Client/Response/ServerMessage.cs rename to SocketServer.Client/Response/ServerMessage.cs diff --git a/SocketService.Client/Response/UpdateRoomVariableResponse.cs b/SocketServer.Client/Response/UpdateRoomVariableResponse.cs similarity index 100% rename from SocketService.Client/Response/UpdateRoomVariableResponse.cs rename to SocketServer.Client/Response/UpdateRoomVariableResponse.cs diff --git a/SocketService.Client/Server.cs b/SocketServer.Client/Server.cs similarity index 74% rename from SocketService.Client/Server.cs rename to SocketServer.Client/Server.cs index 6468aaa..cf6ec03 100644 --- a/SocketService.Client/Server.cs +++ b/SocketServer.Client/Server.cs @@ -3,7 +3,6 @@ using System.Threading; using System.Collections; using System.Net.Sockets; -using SocketServer.Crypto; using SocketServer.Client; using SocketServer.Shared; using SocketServer.Shared.Request; @@ -19,6 +18,7 @@ using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.X509; using SocketServer.Shared.Event; +using SocketServer.Crypto; namespace SocketServer.Client { @@ -269,64 +269,64 @@ private T WaitForResponse() where T : class { T val = default(T); - ResponseHeader header = null; - int step = 0; - - while (step < 2) - { - byte [] data = _socket.ReceiveData(); - buffer.Write(data); - - MemoryStream stream = new MemoryStream(buffer.Buffer); - switch (step) - { - case 0: /* reading header */ - { - string utfString = stream.ReadUTF(); - if (utfString != null) - { - header = XmlSerializationHelper - .DeSerialize(utfString); - - step++; - } - } - break; - - case 1: - { - string rawRequestString = stream.ReadUTF(); - if (rawRequestString != null) - { - if (header != null) - { - val = XmlSerializationHelper.DeSerialize( - ResponseBuilder - .ProcessResponse( - _serverAuthority, - _serverPublicKey, - header, - rawRequestString)); - } - - step++; - } - } - break; - } - - // fix up buffers - buffer = new ClientBuffer(); - - // if any data left, fix up buffers - if (stream.Length > stream.Position) - { - // left over bytes - byte[] leftover = stream.Read((int)(stream.Length - stream.Position)); - buffer.Write(leftover); - } - - } + //ResponseHeader header = null; + //int step = 0; + + //while (step < 2) + //{ + // byte [] data = _socket.ReceiveData(); + // buffer.Write(data); + + // MemoryStream stream = new MemoryStream(buffer.Buffer); + // switch (step) + // { + // case 0: /* reading header */ + // { + // string utfString = stream.ReadUTF(); + // if (utfString != null) + // { + // header = XmlSerializationHelper + // .DeSerialize(utfString); + + // step++; + // } + // } + // break; + + // case 1: + // { + // string rawRequestString = stream.ReadUTF(); + // if (rawRequestString != null) + // { + // if (header != null) + // { + // val = XmlSerializationHelper.DeSerialize( + // ResponseBuilder + // .ProcessResponse( + // _serverAuthority, + // _serverPublicKey, + // header, + // rawRequestString)); + // } + + // step++; + // } + // } + // break; + // } + + // // fix up buffers + // buffer = new ClientBuffer(); + + // // if any data left, fix up buffers + // if (stream.Length > stream.Position) + // { + // // left over bytes + // byte[] leftover = stream.Read((int)(stream.Length - stream.Position)); + // buffer.Write(leftover); + // } + + //} return val; @@ -338,38 +338,38 @@ private T WaitForResponse() where T : class /// The request data. public void SendRequest(RequestTypes requestType, T request, bool encrypted) where T : class { - string requestString = XmlSerializationHelper.Serialize(request); - - RequestHeader header = null; - - byte[] publicKey = null; - - if( encrypted ) - { - header = RequestBuilder.BuildRequestHeader( - EncryptionTypes.Aes, - CompressionTypes.None, - requestType); - - publicKey = EncryptionHelper.EncodeKeyParameter( - _serverAuthority.GetPublicKeyParameter()); - - header.MessageHeader.EncryptionHeader.PublicKey = publicKey; - - } else - { - header = RequestBuilder.BuildRequestHeader( - EncryptionTypes.None, - CompressionTypes.None, - requestType); - } - - _socket.SendData(XmlSerializationHelper.Serialize(header)); - _socket.SendData(RequestBuilder.ProcessRequest( - _serverAuthority, - _serverPublicKey, - header, - XmlSerializationHelper.Serialize(request))); + //string requestString = XmlSerializationHelper.Serialize(request); + + //RequestHeader header = null; + + //byte[] publicKey = null; + + //if( encrypted ) + //{ + // header = RequestBuilder.BuildRequestHeader( + // EncryptionTypes.Aes, + // CompressionTypes.None, + // requestType); + + // publicKey = EncryptionHelper.EncodeKeyParameter( + // _serverAuthority.GetPublicKeyParameter()); + + // header.MessageHeader.EncryptionHeader.PublicKey = publicKey; + + //} else + //{ + // header = RequestBuilder.BuildRequestHeader( + // EncryptionTypes.None, + // CompressionTypes.None, + // requestType); + //} + + //_socket.SendData(XmlSerializationHelper.Serialize(header)); + //_socket.SendData(RequestBuilder.ProcessRequest( + // _serverAuthority, + // _serverPublicKey, + // header, + // XmlSerializationHelper.Serialize(request))); } } diff --git a/SocketService.Client/SharedObjects/SharedObject.cs b/SocketServer.Client/SharedObjects/SharedObject.cs similarity index 100% rename from SocketService.Client/SharedObjects/SharedObject.cs rename to SocketServer.Client/SharedObjects/SharedObject.cs diff --git a/SocketService.Client/SharedObjects/SharedObjectDataHolder.cs b/SocketServer.Client/SharedObjects/SharedObjectDataHolder.cs similarity index 100% rename from SocketService.Client/SharedObjects/SharedObjectDataHolder.cs rename to SocketServer.Client/SharedObjects/SharedObjectDataHolder.cs diff --git a/SocketService.Client/SharedObjects/SharedObjectDataType.cs b/SocketServer.Client/SharedObjects/SharedObjectDataType.cs similarity index 100% rename from SocketService.Client/SharedObjects/SharedObjectDataType.cs rename to SocketServer.Client/SharedObjects/SharedObjectDataType.cs diff --git a/SocketService.Client/SharedObjects/SharedObjectRO.cs b/SocketServer.Client/SharedObjects/SharedObjectRO.cs similarity index 100% rename from SocketService.Client/SharedObjects/SharedObjectRO.cs rename to SocketServer.Client/SharedObjects/SharedObjectRO.cs diff --git a/SocketService.Client/SharedObjects/UserListEntry.cs b/SocketServer.Client/SharedObjects/UserListEntry.cs similarity index 100% rename from SocketService.Client/SharedObjects/UserListEntry.cs rename to SocketServer.Client/SharedObjects/UserListEntry.cs diff --git a/SocketService.Client/SocketServer.Client.csproj b/SocketServer.Client/SocketServer.Client.csproj similarity index 97% rename from SocketService.Client/SocketServer.Client.csproj rename to SocketServer.Client/SocketServer.Client.csproj index b8a4e1f..8a54700 100644 --- a/SocketService.Client/SocketServer.Client.csproj +++ b/SocketServer.Client/SocketServer.Client.csproj @@ -99,11 +99,11 @@ - + {4138075A-49CD-4A46-92CB-DFF64A0BB0B6} SocketServer.Crypto - + {7C9013CF-CEC4-4F7D-B80D-C6FA2E243CF1} SocketServer.Shared diff --git a/SocketService.Client/Sockets/ZipSocket.cs b/SocketServer.Client/Sockets/ZipSocket.cs similarity index 100% rename from SocketService.Client/Sockets/ZipSocket.cs rename to SocketServer.Client/Sockets/ZipSocket.cs diff --git a/SocketService.Crypto/BigInteger.cs b/SocketServer.Crypto/BigInteger.cs similarity index 100% rename from SocketService.Crypto/BigInteger.cs rename to SocketServer.Crypto/BigInteger.cs diff --git a/SocketService.Crypto/CentralAuthority.cs b/SocketServer.Crypto/CentralAuthority.cs similarity index 100% rename from SocketService.Crypto/CentralAuthority.cs rename to SocketServer.Crypto/CentralAuthority.cs diff --git a/SocketService.Crypto/Constants.cs b/SocketServer.Crypto/Constants.cs similarity index 100% rename from SocketService.Crypto/Constants.cs rename to SocketServer.Crypto/Constants.cs diff --git a/SocketService.Crypto/Crc32.cs b/SocketServer.Crypto/Crc32.cs similarity index 100% rename from SocketService.Crypto/Crc32.cs rename to SocketServer.Crypto/Crc32.cs diff --git a/SocketService.Crypto/CryptoManager.cs b/SocketServer.Crypto/CryptoManager.cs similarity index 100% rename from SocketService.Crypto/CryptoManager.cs rename to SocketServer.Crypto/CryptoManager.cs diff --git a/SocketService.Crypto/DHParameterHelper.cs b/SocketServer.Crypto/DHParameterHelper.cs similarity index 100% rename from SocketService.Crypto/DHParameterHelper.cs rename to SocketServer.Crypto/DHParameterHelper.cs diff --git a/SocketService.Crypto/DHProvider.cs b/SocketServer.Crypto/DHProvider.cs similarity index 100% rename from SocketService.Crypto/DHProvider.cs rename to SocketServer.Crypto/DHProvider.cs diff --git a/SocketService.Crypto/DiffieHellmanKey.cs b/SocketServer.Crypto/DiffieHellmanKey.cs similarity index 100% rename from SocketService.Crypto/DiffieHellmanKey.cs rename to SocketServer.Crypto/DiffieHellmanKey.cs diff --git a/SocketService.Crypto/DiffieHellmanProvider.cs b/SocketServer.Crypto/DiffieHellmanProvider.cs similarity index 100% rename from SocketService.Crypto/DiffieHellmanProvider.cs rename to SocketServer.Crypto/DiffieHellmanProvider.cs diff --git a/SocketService.Crypto/EncryptionHelper.cs b/SocketServer.Crypto/EncryptionHelper.cs similarity index 100% rename from SocketService.Crypto/EncryptionHelper.cs rename to SocketServer.Crypto/EncryptionHelper.cs diff --git a/SocketService.Crypto/ICrypto.cs b/SocketServer.Crypto/ICrypto.cs similarity index 100% rename from SocketService.Crypto/ICrypto.cs rename to SocketServer.Crypto/ICrypto.cs diff --git a/SocketService.Crypto/Properties/AssemblyInfo.cs b/SocketServer.Crypto/Properties/AssemblyInfo.cs similarity index 100% rename from SocketService.Crypto/Properties/AssemblyInfo.cs rename to SocketServer.Crypto/Properties/AssemblyInfo.cs diff --git a/SocketService.Crypto/RijndaelCrypto.cs b/SocketServer.Crypto/RijndaelCrypto.cs similarity index 78% rename from SocketService.Crypto/RijndaelCrypto.cs rename to SocketServer.Crypto/RijndaelCrypto.cs index 092cbbb..baaaafe 100644 --- a/SocketService.Crypto/RijndaelCrypto.cs +++ b/SocketServer.Crypto/RijndaelCrypto.cs @@ -10,6 +10,11 @@ public class RijndaelCrypto { private const int DefaultKeySize = 128; + public byte [] Encrypt(byte [] plaintext, string password) + { + return Encrypt(plaintext, SymmetricAlgorithmFactory.GetRijndaelManaged(password, DefaultKeySize)); + } + public string Encrypt(string plainText, string password) { var plainBytes = Encoding.UTF8.GetBytes(plainText); @@ -21,6 +26,11 @@ public string Encrypt(string plainText, string password) ); } + public byte [] Decrypt( byte [] ciphertext, string password) + { + return Decrypt(ciphertext, SymmetricAlgorithmFactory.GetRijndaelManaged(password, DefaultKeySize)); + } + public string Decrypt(string cipherText, string password) { var encryptedBytes = Convert.FromBase64String(cipherText); diff --git a/SocketService.Crypto/ServerAuthority.cs b/SocketServer.Crypto/ServerAuthority.cs similarity index 100% rename from SocketService.Crypto/ServerAuthority.cs rename to SocketServer.Crypto/ServerAuthority.cs diff --git a/SocketService.Crypto/ServerAuthorityFactory.cs b/SocketServer.Crypto/ServerAuthorityFactory.cs similarity index 100% rename from SocketService.Crypto/ServerAuthorityFactory.cs rename to SocketServer.Crypto/ServerAuthorityFactory.cs diff --git a/SocketService.Crypto/SharedKeyCrypto.cs b/SocketServer.Crypto/SharedKeyCrypto.cs similarity index 100% rename from SocketService.Crypto/SharedKeyCrypto.cs rename to SocketServer.Crypto/SharedKeyCrypto.cs diff --git a/SocketService.Crypto/SocketServer.Crypto.csproj b/SocketServer.Crypto/SocketServer.Crypto.csproj similarity index 100% rename from SocketService.Crypto/SocketServer.Crypto.csproj rename to SocketServer.Crypto/SocketServer.Crypto.csproj diff --git a/SocketService.Crypto/StringExtentions.cs b/SocketServer.Crypto/StringExtentions.cs similarity index 100% rename from SocketService.Crypto/StringExtentions.cs rename to SocketServer.Crypto/StringExtentions.cs diff --git a/SocketService.Crypto/StrongNumberProvider.cs b/SocketServer.Crypto/StrongNumberProvider.cs similarity index 100% rename from SocketService.Crypto/StrongNumberProvider.cs rename to SocketServer.Crypto/StrongNumberProvider.cs diff --git a/SocketService.Crypto/SymmetricAlgorithmFactory.cs b/SocketServer.Crypto/SymmetricAlgorithmFactory.cs similarity index 100% rename from SocketService.Crypto/SymmetricAlgorithmFactory.cs rename to SocketServer.Crypto/SymmetricAlgorithmFactory.cs diff --git a/SocketService.Event/ConnectionEventArgs.cs b/SocketServer.Event/ConnectionEventArgs.cs similarity index 100% rename from SocketService.Event/ConnectionEventArgs.cs rename to SocketServer.Event/ConnectionEventArgs.cs diff --git a/SocketService.Event/GetRoomVariableResponseArgs.cs b/SocketServer.Event/GetRoomVariableResponseArgs.cs similarity index 100% rename from SocketService.Event/GetRoomVariableResponseArgs.cs rename to SocketServer.Event/GetRoomVariableResponseArgs.cs diff --git a/SocketService.Event/IEvent.cs b/SocketServer.Event/IEvent.cs similarity index 100% rename from SocketService.Event/IEvent.cs rename to SocketServer.Event/IEvent.cs diff --git a/SocketService.Event/JoinRoomEvent.cs b/SocketServer.Event/JoinRoomEvent.cs similarity index 100% rename from SocketService.Event/JoinRoomEvent.cs rename to SocketServer.Event/JoinRoomEvent.cs diff --git a/SocketService.Event/JoinRoomEventArgs.cs b/SocketServer.Event/JoinRoomEventArgs.cs similarity index 100% rename from SocketService.Event/JoinRoomEventArgs.cs rename to SocketServer.Event/JoinRoomEventArgs.cs diff --git a/SocketService.Event/LeaveRoomEvent.cs b/SocketServer.Event/LeaveRoomEvent.cs similarity index 100% rename from SocketService.Event/LeaveRoomEvent.cs rename to SocketServer.Event/LeaveRoomEvent.cs diff --git a/SocketService.Event/LeaveRoomEventArgs.cs b/SocketServer.Event/LeaveRoomEventArgs.cs similarity index 100% rename from SocketService.Event/LeaveRoomEventArgs.cs rename to SocketServer.Event/LeaveRoomEventArgs.cs diff --git a/SocketService.Event/LoginResponseEventArgs.cs b/SocketServer.Event/LoginResponseEventArgs.cs similarity index 100% rename from SocketService.Event/LoginResponseEventArgs.cs rename to SocketServer.Event/LoginResponseEventArgs.cs diff --git a/SocketService.Event/Properties/AssemblyInfo.cs b/SocketServer.Event/Properties/AssemblyInfo.cs similarity index 100% rename from SocketService.Event/Properties/AssemblyInfo.cs rename to SocketServer.Event/Properties/AssemblyInfo.cs diff --git a/SocketService.Event/PublicMessageEvent.cs b/SocketServer.Event/PublicMessageEvent.cs similarity index 100% rename from SocketService.Event/PublicMessageEvent.cs rename to SocketServer.Event/PublicMessageEvent.cs diff --git a/SocketService.Event/RoomUserUpdateEvent.cs b/SocketServer.Event/RoomUserUpdateEvent.cs similarity index 100% rename from SocketService.Event/RoomUserUpdateEvent.cs rename to SocketServer.Event/RoomUserUpdateEvent.cs diff --git a/SocketService.Event/RoomUserUpdateEventArgs.cs b/SocketServer.Event/RoomUserUpdateEventArgs.cs similarity index 100% rename from SocketService.Event/RoomUserUpdateEventArgs.cs rename to SocketServer.Event/RoomUserUpdateEventArgs.cs diff --git a/SocketService.Event/RoomVariableUpdateArgs.cs b/SocketServer.Event/RoomVariableUpdateArgs.cs similarity index 100% rename from SocketService.Event/RoomVariableUpdateArgs.cs rename to SocketServer.Event/RoomVariableUpdateArgs.cs diff --git a/SocketService.Event/RoomVariableUpdateEvent.cs b/SocketServer.Event/RoomVariableUpdateEvent.cs similarity index 100% rename from SocketService.Event/RoomVariableUpdateEvent.cs rename to SocketServer.Event/RoomVariableUpdateEvent.cs diff --git a/SocketService.Event/ServerEventEventArgs.cs b/SocketServer.Event/ServerEventEventArgs.cs similarity index 100% rename from SocketService.Event/ServerEventEventArgs.cs rename to SocketServer.Event/ServerEventEventArgs.cs diff --git a/SocketService.Event/ServerMessageReceivedArgs.cs b/SocketServer.Event/ServerMessageReceivedArgs.cs similarity index 100% rename from SocketService.Event/ServerMessageReceivedArgs.cs rename to SocketServer.Event/ServerMessageReceivedArgs.cs diff --git a/SocketService.Event/ServerResponseEventArgs.cs b/SocketServer.Event/ServerResponseEventArgs.cs similarity index 100% rename from SocketService.Event/ServerResponseEventArgs.cs rename to SocketServer.Event/ServerResponseEventArgs.cs diff --git a/SocketService.Event/SocketServer.Event.csproj b/SocketServer.Event/SocketServer.Event.csproj similarity index 96% rename from SocketService.Event/SocketServer.Event.csproj rename to SocketServer.Event/SocketServer.Event.csproj index 2d4f4cd..77f565f 100644 --- a/SocketService.Event/SocketServer.Event.csproj +++ b/SocketServer.Event/SocketServer.Event.csproj @@ -50,7 +50,7 @@ - + {7C9013CF-CEC4-4F7D-B80D-C6FA2E243CF1} SocketServer.Shared diff --git a/SocketService.Messages/DiffieHellmanParametersMessage.cs b/SocketServer.Messages/DiffieHellmanParametersMessage.cs similarity index 80% rename from SocketService.Messages/DiffieHellmanParametersMessage.cs rename to SocketServer.Messages/DiffieHellmanParametersMessage.cs index 9f443a3..caa871e 100644 --- a/SocketService.Messages/DiffieHellmanParametersMessage.cs +++ b/SocketServer.Messages/DiffieHellmanParametersMessage.cs @@ -3,28 +3,23 @@ using System.Linq; using System.Text; using SocketServer.Shared.Messaging; -using ProtoBuf; namespace SocketServer.Messages { - [ProtoContract] public class DiffieHellmanInfo { - [ProtoMember(1)] public string P { get; set; } - [ProtoMember(2)] public string G { get; set; } - [ProtoMember(3)] public byte[] PublicKeyInfo { get; diff --git a/SocketService.Messages/EnableEncryptionMessage.cs b/SocketServer.Messages/EnableEncryptionMessage.cs similarity index 74% rename from SocketService.Messages/EnableEncryptionMessage.cs rename to SocketServer.Messages/EnableEncryptionMessage.cs index 9d53e86..663c903 100644 --- a/SocketService.Messages/EnableEncryptionMessage.cs +++ b/SocketServer.Messages/EnableEncryptionMessage.cs @@ -3,14 +3,11 @@ using System.Linq; using System.Text; using SocketServer.Shared.Messaging; -using ProtoBuf; namespace SocketServer.Messages { - [ProtoContract] - public class EnableEncryptionMessage : IMessage + public class EnableEncryptionMessage : IValidatedMessage { - [ProtoMember(1)] public string MessageID { get; @@ -21,14 +18,12 @@ public void Validate() { } - [ProtoMember(2)] public bool Enable { get; set; } - [ProtoMember(3)] public byte[] PublicKeyInfo { get; diff --git a/SocketService.Messages/EnableEncryptionResponse.cs b/SocketServer.Messages/EnableEncryptionResponse.cs similarity index 75% rename from SocketService.Messages/EnableEncryptionResponse.cs rename to SocketServer.Messages/EnableEncryptionResponse.cs index 3f788ef..a141789 100644 --- a/SocketService.Messages/EnableEncryptionResponse.cs +++ b/SocketServer.Messages/EnableEncryptionResponse.cs @@ -3,14 +3,11 @@ using System.Linq; using System.Text; using SocketServer.Shared.Messaging; -using ProtoBuf; namespace SocketServer.Messages { - [ProtoContract] - public class EnableEncryptionResponse : IMessage + public class EnableEncryptionResponse : IValidatedMessage { - [ProtoMember(1)] public string MessageID { get; set; @@ -21,7 +18,6 @@ public void Validate() throw new NotImplementedException(); } - [ProtoMember(2)] public bool Enabled { get; diff --git a/SocketService.Messages/MessageOne.cs b/SocketServer.Messages/MessageOne.cs similarity index 80% rename from SocketService.Messages/MessageOne.cs rename to SocketServer.Messages/MessageOne.cs index 2cc22a3..6979791 100644 --- a/SocketService.Messages/MessageOne.cs +++ b/SocketServer.Messages/MessageOne.cs @@ -2,19 +2,15 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using ProtoBuf; using SocketServer.Shared.Messaging; using System.IO; namespace SocketServer.Messages { - [ProtoContract] - public class MessageOne : IMessage + public class MessageOne : IValidatedMessage { - [ProtoMember(1)] public int Value { get; set; } - [ProtoMember(2)] public string MessageID { get; set; diff --git a/SocketServer.Messages/Messages.cs b/SocketServer.Messages/Messages.cs new file mode 100644 index 0000000..5519e14 --- /dev/null +++ b/SocketServer.Messages/Messages.cs @@ -0,0 +1,2609 @@ +// Generated by ProtoGen, Version=2.4.1.473, Culture=neutral, PublicKeyToken=55f7125234beb589. DO NOT EDIT! +#pragma warning disable 1591, 0612 +#region Designer generated code + +using pb = global::Google.ProtocolBuffers; +using pbc = global::Google.ProtocolBuffers.Collections; +using pbd = global::Google.ProtocolBuffers.Descriptors; +using scg = global::System.Collections.Generic; +namespace com.BlazeServer.Messages.MessageProtos { + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public static partial class Messages { + + #region Extension registration + public static void RegisterAllExtensions(pb::ExtensionRegistry registry) { + } + #endregion + #region Static variables + internal static pbd::MessageDescriptor internal__static_message_EnableEncryptionRequest__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_message_EnableEncryptionRequest__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_message_EnableEncryptionResponse__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_message_EnableEncryptionResponse__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_message_ServerConnectionResponse__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_message_ServerConnectionResponse__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_message_ServerConnectionResponse_KeyParameters__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_message_ServerConnectionResponse_KeyParameters__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_message_LoginRequest__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_message_LoginRequest__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_message_CreateRoomRequest__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_message_CreateRoomRequest__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_message_LoginResponse__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_message_LoginResponse__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_message_TestMessage__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_message_TestMessage__FieldAccessorTable; + #endregion + #region Descriptor + public static pbd::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbd::FileDescriptor descriptor; + + static Messages() { + byte[] descriptorData = global::System.Convert.FromBase64String( + "Cg5tZXNzYWdlcy5wcm90bxIHbWVzc2FnZSJQChdFbmFibGVFbmNyeXB0aW9u" + + "UmVxdWVzdBISCgptZXNzYWdlX2lkGAEgAigFEg4KBmVuYWJsZRgCIAIoCBIR" + + "CglwdWJsaWNrZXkYAyACKAwiUgoYRW5hYmxlRW5jcnlwdGlvblJlc3BvbnNl" + + "EhIKCm1lc3NhZ2VfaWQYASACKAUSDwoHc3VjY2VzcxgCIAIoCBIRCglwdWJs" + + "aWNrZXkYAyABKAwimgEKGFNlcnZlckNvbm5lY3Rpb25SZXNwb25zZRISCgpt" + + "ZXNzYWdlX2lkGAEgAigFEkMKCnBhcmFtZXRlcnMYAiACKAsyLy5tZXNzYWdl" + + "LlNlcnZlckNvbm5lY3Rpb25SZXNwb25zZS5LZXlQYXJhbWV0ZXJzGiUKDUtl" + + "eVBhcmFtZXRlcnMSCQoBZxgBIAIoCRIJCgFwGAIgAigJIiEKDExvZ2luUmVx" + + "dWVzdBIRCgl1c2VyX25hbWUYASACKAkiJgoRQ3JlYXRlUm9vbVJlcXVlc3QS" + + "EQoJcm9vbV9uYW1lGAEgAigJIiAKDUxvZ2luUmVzcG9uc2USDwoHc3VjY2Vz" + + "cxgBIAIoCCIhCgtUZXN0TWVzc2FnZRISCgptZXNzYWdlX2lkGAEgAigFQikK" + + "GGNvbS5CbGF6ZVNlcnZlci5NZXNzYWdlc0INTWVzc2FnZVByb3Rvcw=="); + pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { + descriptor = root; + internal__static_message_EnableEncryptionRequest__Descriptor = Descriptor.MessageTypes[0]; + internal__static_message_EnableEncryptionRequest__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_message_EnableEncryptionRequest__Descriptor, + new string[] { "MessageId", "Enable", "Publickey", }); + internal__static_message_EnableEncryptionResponse__Descriptor = Descriptor.MessageTypes[1]; + internal__static_message_EnableEncryptionResponse__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_message_EnableEncryptionResponse__Descriptor, + new string[] { "MessageId", "Success", "Publickey", }); + internal__static_message_ServerConnectionResponse__Descriptor = Descriptor.MessageTypes[2]; + internal__static_message_ServerConnectionResponse__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_message_ServerConnectionResponse__Descriptor, + new string[] { "MessageId", "Parameters", }); + internal__static_message_ServerConnectionResponse_KeyParameters__Descriptor = internal__static_message_ServerConnectionResponse__Descriptor.NestedTypes[0]; + internal__static_message_ServerConnectionResponse_KeyParameters__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_message_ServerConnectionResponse_KeyParameters__Descriptor, + new string[] { "G", "P", }); + internal__static_message_LoginRequest__Descriptor = Descriptor.MessageTypes[3]; + internal__static_message_LoginRequest__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_message_LoginRequest__Descriptor, + new string[] { "UserName", }); + internal__static_message_CreateRoomRequest__Descriptor = Descriptor.MessageTypes[4]; + internal__static_message_CreateRoomRequest__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_message_CreateRoomRequest__Descriptor, + new string[] { "RoomName", }); + internal__static_message_LoginResponse__Descriptor = Descriptor.MessageTypes[5]; + internal__static_message_LoginResponse__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_message_LoginResponse__Descriptor, + new string[] { "Success", }); + internal__static_message_TestMessage__Descriptor = Descriptor.MessageTypes[6]; + internal__static_message_TestMessage__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_message_TestMessage__Descriptor, + new string[] { "MessageId", }); + return null; + }; + pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData, + new pbd::FileDescriptor[] { + }, assigner); + } + #endregion + + } + #region Messages + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class EnableEncryptionRequest : pb::GeneratedMessage { + private EnableEncryptionRequest() { } + private static readonly EnableEncryptionRequest defaultInstance = new EnableEncryptionRequest().MakeReadOnly(); + private static readonly string[] _enableEncryptionRequestFieldNames = new string[] { "enable", "message_id", "publickey" }; + private static readonly uint[] _enableEncryptionRequestFieldTags = new uint[] { 16, 8, 26 }; + public static EnableEncryptionRequest DefaultInstance { + get { return defaultInstance; } + } + + public override EnableEncryptionRequest DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override EnableEncryptionRequest ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_EnableEncryptionRequest__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_EnableEncryptionRequest__FieldAccessorTable; } + } + + public const int MessageIdFieldNumber = 1; + private bool hasMessageId; + private int messageId_; + public bool HasMessageId { + get { return hasMessageId; } + } + public int MessageId { + get { return messageId_; } + } + + public const int EnableFieldNumber = 2; + private bool hasEnable; + private bool enable_; + public bool HasEnable { + get { return hasEnable; } + } + public bool Enable { + get { return enable_; } + } + + public const int PublickeyFieldNumber = 3; + private bool hasPublickey; + private pb::ByteString publickey_ = pb::ByteString.Empty; + public bool HasPublickey { + get { return hasPublickey; } + } + public pb::ByteString Publickey { + get { return publickey_; } + } + + public override bool IsInitialized { + get { + if (!hasMessageId) return false; + if (!hasEnable) return false; + if (!hasPublickey) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _enableEncryptionRequestFieldNames; + if (hasMessageId) { + output.WriteInt32(1, field_names[1], MessageId); + } + if (hasEnable) { + output.WriteBool(2, field_names[0], Enable); + } + if (hasPublickey) { + output.WriteBytes(3, field_names[2], Publickey); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasMessageId) { + size += pb::CodedOutputStream.ComputeInt32Size(1, MessageId); + } + if (hasEnable) { + size += pb::CodedOutputStream.ComputeBoolSize(2, Enable); + } + if (hasPublickey) { + size += pb::CodedOutputStream.ComputeBytesSize(3, Publickey); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static EnableEncryptionRequest ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static EnableEncryptionRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static EnableEncryptionRequest ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static EnableEncryptionRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static EnableEncryptionRequest ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static EnableEncryptionRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static EnableEncryptionRequest ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static EnableEncryptionRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static EnableEncryptionRequest ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static EnableEncryptionRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private EnableEncryptionRequest MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(EnableEncryptionRequest prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(EnableEncryptionRequest cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private EnableEncryptionRequest result; + + private EnableEncryptionRequest PrepareBuilder() { + if (resultIsReadOnly) { + EnableEncryptionRequest original = result; + result = new EnableEncryptionRequest(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override EnableEncryptionRequest MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::com.BlazeServer.Messages.MessageProtos.EnableEncryptionRequest.Descriptor; } + } + + public override EnableEncryptionRequest DefaultInstanceForType { + get { return global::com.BlazeServer.Messages.MessageProtos.EnableEncryptionRequest.DefaultInstance; } + } + + public override EnableEncryptionRequest BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is EnableEncryptionRequest) { + return MergeFrom((EnableEncryptionRequest) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(EnableEncryptionRequest other) { + if (other == global::com.BlazeServer.Messages.MessageProtos.EnableEncryptionRequest.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasMessageId) { + MessageId = other.MessageId; + } + if (other.HasEnable) { + Enable = other.Enable; + } + if (other.HasPublickey) { + Publickey = other.Publickey; + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_enableEncryptionRequestFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _enableEncryptionRequestFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasMessageId = input.ReadInt32(ref result.messageId_); + break; + } + case 16: { + result.hasEnable = input.ReadBool(ref result.enable_); + break; + } + case 26: { + result.hasPublickey = input.ReadBytes(ref result.publickey_); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasMessageId { + get { return result.hasMessageId; } + } + public int MessageId { + get { return result.MessageId; } + set { SetMessageId(value); } + } + public Builder SetMessageId(int value) { + PrepareBuilder(); + result.hasMessageId = true; + result.messageId_ = value; + return this; + } + public Builder ClearMessageId() { + PrepareBuilder(); + result.hasMessageId = false; + result.messageId_ = 0; + return this; + } + + public bool HasEnable { + get { return result.hasEnable; } + } + public bool Enable { + get { return result.Enable; } + set { SetEnable(value); } + } + public Builder SetEnable(bool value) { + PrepareBuilder(); + result.hasEnable = true; + result.enable_ = value; + return this; + } + public Builder ClearEnable() { + PrepareBuilder(); + result.hasEnable = false; + result.enable_ = false; + return this; + } + + public bool HasPublickey { + get { return result.hasPublickey; } + } + public pb::ByteString Publickey { + get { return result.Publickey; } + set { SetPublickey(value); } + } + public Builder SetPublickey(pb::ByteString value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasPublickey = true; + result.publickey_ = value; + return this; + } + public Builder ClearPublickey() { + PrepareBuilder(); + result.hasPublickey = false; + result.publickey_ = pb::ByteString.Empty; + return this; + } + } + static EnableEncryptionRequest() { + object.ReferenceEquals(global::com.BlazeServer.Messages.MessageProtos.Messages.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class EnableEncryptionResponse : pb::GeneratedMessage { + private EnableEncryptionResponse() { } + private static readonly EnableEncryptionResponse defaultInstance = new EnableEncryptionResponse().MakeReadOnly(); + private static readonly string[] _enableEncryptionResponseFieldNames = new string[] { "message_id", "publickey", "success" }; + private static readonly uint[] _enableEncryptionResponseFieldTags = new uint[] { 8, 26, 16 }; + public static EnableEncryptionResponse DefaultInstance { + get { return defaultInstance; } + } + + public override EnableEncryptionResponse DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override EnableEncryptionResponse ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_EnableEncryptionResponse__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_EnableEncryptionResponse__FieldAccessorTable; } + } + + public const int MessageIdFieldNumber = 1; + private bool hasMessageId; + private int messageId_; + public bool HasMessageId { + get { return hasMessageId; } + } + public int MessageId { + get { return messageId_; } + } + + public const int SuccessFieldNumber = 2; + private bool hasSuccess; + private bool success_; + public bool HasSuccess { + get { return hasSuccess; } + } + public bool Success { + get { return success_; } + } + + public const int PublickeyFieldNumber = 3; + private bool hasPublickey; + private pb::ByteString publickey_ = pb::ByteString.Empty; + public bool HasPublickey { + get { return hasPublickey; } + } + public pb::ByteString Publickey { + get { return publickey_; } + } + + public override bool IsInitialized { + get { + if (!hasMessageId) return false; + if (!hasSuccess) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _enableEncryptionResponseFieldNames; + if (hasMessageId) { + output.WriteInt32(1, field_names[0], MessageId); + } + if (hasSuccess) { + output.WriteBool(2, field_names[2], Success); + } + if (hasPublickey) { + output.WriteBytes(3, field_names[1], Publickey); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasMessageId) { + size += pb::CodedOutputStream.ComputeInt32Size(1, MessageId); + } + if (hasSuccess) { + size += pb::CodedOutputStream.ComputeBoolSize(2, Success); + } + if (hasPublickey) { + size += pb::CodedOutputStream.ComputeBytesSize(3, Publickey); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static EnableEncryptionResponse ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static EnableEncryptionResponse ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static EnableEncryptionResponse ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static EnableEncryptionResponse ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static EnableEncryptionResponse ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static EnableEncryptionResponse ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static EnableEncryptionResponse ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static EnableEncryptionResponse ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static EnableEncryptionResponse ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static EnableEncryptionResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private EnableEncryptionResponse MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(EnableEncryptionResponse prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(EnableEncryptionResponse cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private EnableEncryptionResponse result; + + private EnableEncryptionResponse PrepareBuilder() { + if (resultIsReadOnly) { + EnableEncryptionResponse original = result; + result = new EnableEncryptionResponse(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override EnableEncryptionResponse MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::com.BlazeServer.Messages.MessageProtos.EnableEncryptionResponse.Descriptor; } + } + + public override EnableEncryptionResponse DefaultInstanceForType { + get { return global::com.BlazeServer.Messages.MessageProtos.EnableEncryptionResponse.DefaultInstance; } + } + + public override EnableEncryptionResponse BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is EnableEncryptionResponse) { + return MergeFrom((EnableEncryptionResponse) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(EnableEncryptionResponse other) { + if (other == global::com.BlazeServer.Messages.MessageProtos.EnableEncryptionResponse.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasMessageId) { + MessageId = other.MessageId; + } + if (other.HasSuccess) { + Success = other.Success; + } + if (other.HasPublickey) { + Publickey = other.Publickey; + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_enableEncryptionResponseFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _enableEncryptionResponseFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasMessageId = input.ReadInt32(ref result.messageId_); + break; + } + case 16: { + result.hasSuccess = input.ReadBool(ref result.success_); + break; + } + case 26: { + result.hasPublickey = input.ReadBytes(ref result.publickey_); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasMessageId { + get { return result.hasMessageId; } + } + public int MessageId { + get { return result.MessageId; } + set { SetMessageId(value); } + } + public Builder SetMessageId(int value) { + PrepareBuilder(); + result.hasMessageId = true; + result.messageId_ = value; + return this; + } + public Builder ClearMessageId() { + PrepareBuilder(); + result.hasMessageId = false; + result.messageId_ = 0; + return this; + } + + public bool HasSuccess { + get { return result.hasSuccess; } + } + public bool Success { + get { return result.Success; } + set { SetSuccess(value); } + } + public Builder SetSuccess(bool value) { + PrepareBuilder(); + result.hasSuccess = true; + result.success_ = value; + return this; + } + public Builder ClearSuccess() { + PrepareBuilder(); + result.hasSuccess = false; + result.success_ = false; + return this; + } + + public bool HasPublickey { + get { return result.hasPublickey; } + } + public pb::ByteString Publickey { + get { return result.Publickey; } + set { SetPublickey(value); } + } + public Builder SetPublickey(pb::ByteString value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasPublickey = true; + result.publickey_ = value; + return this; + } + public Builder ClearPublickey() { + PrepareBuilder(); + result.hasPublickey = false; + result.publickey_ = pb::ByteString.Empty; + return this; + } + } + static EnableEncryptionResponse() { + object.ReferenceEquals(global::com.BlazeServer.Messages.MessageProtos.Messages.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class ServerConnectionResponse : pb::GeneratedMessage { + private ServerConnectionResponse() { } + private static readonly ServerConnectionResponse defaultInstance = new ServerConnectionResponse().MakeReadOnly(); + private static readonly string[] _serverConnectionResponseFieldNames = new string[] { "message_id", "parameters" }; + private static readonly uint[] _serverConnectionResponseFieldTags = new uint[] { 8, 18 }; + public static ServerConnectionResponse DefaultInstance { + get { return defaultInstance; } + } + + public override ServerConnectionResponse DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override ServerConnectionResponse ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_ServerConnectionResponse__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_ServerConnectionResponse__FieldAccessorTable; } + } + + #region Nested types + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public static class Types { + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class KeyParameters : pb::GeneratedMessage { + private KeyParameters() { } + private static readonly KeyParameters defaultInstance = new KeyParameters().MakeReadOnly(); + private static readonly string[] _keyParametersFieldNames = new string[] { "g", "p" }; + private static readonly uint[] _keyParametersFieldTags = new uint[] { 10, 18 }; + public static KeyParameters DefaultInstance { + get { return defaultInstance; } + } + + public override KeyParameters DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override KeyParameters ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_ServerConnectionResponse_KeyParameters__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_ServerConnectionResponse_KeyParameters__FieldAccessorTable; } + } + + public const int GFieldNumber = 1; + private bool hasG; + private string g_ = ""; + public bool HasG { + get { return hasG; } + } + public string G { + get { return g_; } + } + + public const int PFieldNumber = 2; + private bool hasP; + private string p_ = ""; + public bool HasP { + get { return hasP; } + } + public string P { + get { return p_; } + } + + public override bool IsInitialized { + get { + if (!hasG) return false; + if (!hasP) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _keyParametersFieldNames; + if (hasG) { + output.WriteString(1, field_names[0], G); + } + if (hasP) { + output.WriteString(2, field_names[1], P); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasG) { + size += pb::CodedOutputStream.ComputeStringSize(1, G); + } + if (hasP) { + size += pb::CodedOutputStream.ComputeStringSize(2, P); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static KeyParameters ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static KeyParameters ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static KeyParameters ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static KeyParameters ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static KeyParameters ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static KeyParameters ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static KeyParameters ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static KeyParameters ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static KeyParameters ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static KeyParameters ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private KeyParameters MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(KeyParameters prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(KeyParameters cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private KeyParameters result; + + private KeyParameters PrepareBuilder() { + if (resultIsReadOnly) { + KeyParameters original = result; + result = new KeyParameters(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override KeyParameters MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.Descriptor; } + } + + public override KeyParameters DefaultInstanceForType { + get { return global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.DefaultInstance; } + } + + public override KeyParameters BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is KeyParameters) { + return MergeFrom((KeyParameters) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(KeyParameters other) { + if (other == global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasG) { + G = other.G; + } + if (other.HasP) { + P = other.P; + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_keyParametersFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _keyParametersFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 10: { + result.hasG = input.ReadString(ref result.g_); + break; + } + case 18: { + result.hasP = input.ReadString(ref result.p_); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasG { + get { return result.hasG; } + } + public string G { + get { return result.G; } + set { SetG(value); } + } + public Builder SetG(string value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasG = true; + result.g_ = value; + return this; + } + public Builder ClearG() { + PrepareBuilder(); + result.hasG = false; + result.g_ = ""; + return this; + } + + public bool HasP { + get { return result.hasP; } + } + public string P { + get { return result.P; } + set { SetP(value); } + } + public Builder SetP(string value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasP = true; + result.p_ = value; + return this; + } + public Builder ClearP() { + PrepareBuilder(); + result.hasP = false; + result.p_ = ""; + return this; + } + } + static KeyParameters() { + object.ReferenceEquals(global::com.BlazeServer.Messages.MessageProtos.Messages.Descriptor, null); + } + } + + } + #endregion + + public const int MessageIdFieldNumber = 1; + private bool hasMessageId; + private int messageId_; + public bool HasMessageId { + get { return hasMessageId; } + } + public int MessageId { + get { return messageId_; } + } + + public const int ParametersFieldNumber = 2; + private bool hasParameters; + private global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters parameters_; + public bool HasParameters { + get { return hasParameters; } + } + public global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters Parameters { + get { return parameters_ ?? global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.DefaultInstance; } + } + + public override bool IsInitialized { + get { + if (!hasMessageId) return false; + if (!hasParameters) return false; + if (!Parameters.IsInitialized) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _serverConnectionResponseFieldNames; + if (hasMessageId) { + output.WriteInt32(1, field_names[0], MessageId); + } + if (hasParameters) { + output.WriteMessage(2, field_names[1], Parameters); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasMessageId) { + size += pb::CodedOutputStream.ComputeInt32Size(1, MessageId); + } + if (hasParameters) { + size += pb::CodedOutputStream.ComputeMessageSize(2, Parameters); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static ServerConnectionResponse ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static ServerConnectionResponse ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static ServerConnectionResponse ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static ServerConnectionResponse ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static ServerConnectionResponse ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static ServerConnectionResponse ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static ServerConnectionResponse ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static ServerConnectionResponse ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static ServerConnectionResponse ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static ServerConnectionResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private ServerConnectionResponse MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(ServerConnectionResponse prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(ServerConnectionResponse cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private ServerConnectionResponse result; + + private ServerConnectionResponse PrepareBuilder() { + if (resultIsReadOnly) { + ServerConnectionResponse original = result; + result = new ServerConnectionResponse(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override ServerConnectionResponse MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Descriptor; } + } + + public override ServerConnectionResponse DefaultInstanceForType { + get { return global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.DefaultInstance; } + } + + public override ServerConnectionResponse BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is ServerConnectionResponse) { + return MergeFrom((ServerConnectionResponse) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(ServerConnectionResponse other) { + if (other == global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasMessageId) { + MessageId = other.MessageId; + } + if (other.HasParameters) { + MergeParameters(other.Parameters); + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_serverConnectionResponseFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _serverConnectionResponseFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasMessageId = input.ReadInt32(ref result.messageId_); + break; + } + case 18: { + global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.Builder subBuilder = global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.CreateBuilder(); + if (result.hasParameters) { + subBuilder.MergeFrom(Parameters); + } + input.ReadMessage(subBuilder, extensionRegistry); + Parameters = subBuilder.BuildPartial(); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasMessageId { + get { return result.hasMessageId; } + } + public int MessageId { + get { return result.MessageId; } + set { SetMessageId(value); } + } + public Builder SetMessageId(int value) { + PrepareBuilder(); + result.hasMessageId = true; + result.messageId_ = value; + return this; + } + public Builder ClearMessageId() { + PrepareBuilder(); + result.hasMessageId = false; + result.messageId_ = 0; + return this; + } + + public bool HasParameters { + get { return result.hasParameters; } + } + public global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters Parameters { + get { return result.Parameters; } + set { SetParameters(value); } + } + public Builder SetParameters(global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasParameters = true; + result.parameters_ = value; + return this; + } + public Builder SetParameters(global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasParameters = true; + result.parameters_ = builderForValue.Build(); + return this; + } + public Builder MergeParameters(global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasParameters && + result.parameters_ != global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.DefaultInstance) { + result.parameters_ = global::com.BlazeServer.Messages.MessageProtos.ServerConnectionResponse.Types.KeyParameters.CreateBuilder(result.parameters_).MergeFrom(value).BuildPartial(); + } else { + result.parameters_ = value; + } + result.hasParameters = true; + return this; + } + public Builder ClearParameters() { + PrepareBuilder(); + result.hasParameters = false; + result.parameters_ = null; + return this; + } + } + static ServerConnectionResponse() { + object.ReferenceEquals(global::com.BlazeServer.Messages.MessageProtos.Messages.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class LoginRequest : pb::GeneratedMessage { + private LoginRequest() { } + private static readonly LoginRequest defaultInstance = new LoginRequest().MakeReadOnly(); + private static readonly string[] _loginRequestFieldNames = new string[] { "user_name" }; + private static readonly uint[] _loginRequestFieldTags = new uint[] { 10 }; + public static LoginRequest DefaultInstance { + get { return defaultInstance; } + } + + public override LoginRequest DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override LoginRequest ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_LoginRequest__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_LoginRequest__FieldAccessorTable; } + } + + public const int UserNameFieldNumber = 1; + private bool hasUserName; + private string userName_ = ""; + public bool HasUserName { + get { return hasUserName; } + } + public string UserName { + get { return userName_; } + } + + public override bool IsInitialized { + get { + if (!hasUserName) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _loginRequestFieldNames; + if (hasUserName) { + output.WriteString(1, field_names[0], UserName); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasUserName) { + size += pb::CodedOutputStream.ComputeStringSize(1, UserName); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static LoginRequest ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static LoginRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static LoginRequest ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static LoginRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static LoginRequest ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static LoginRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static LoginRequest ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static LoginRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static LoginRequest ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static LoginRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private LoginRequest MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(LoginRequest prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(LoginRequest cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private LoginRequest result; + + private LoginRequest PrepareBuilder() { + if (resultIsReadOnly) { + LoginRequest original = result; + result = new LoginRequest(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override LoginRequest MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::com.BlazeServer.Messages.MessageProtos.LoginRequest.Descriptor; } + } + + public override LoginRequest DefaultInstanceForType { + get { return global::com.BlazeServer.Messages.MessageProtos.LoginRequest.DefaultInstance; } + } + + public override LoginRequest BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is LoginRequest) { + return MergeFrom((LoginRequest) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(LoginRequest other) { + if (other == global::com.BlazeServer.Messages.MessageProtos.LoginRequest.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasUserName) { + UserName = other.UserName; + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_loginRequestFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _loginRequestFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 10: { + result.hasUserName = input.ReadString(ref result.userName_); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasUserName { + get { return result.hasUserName; } + } + public string UserName { + get { return result.UserName; } + set { SetUserName(value); } + } + public Builder SetUserName(string value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasUserName = true; + result.userName_ = value; + return this; + } + public Builder ClearUserName() { + PrepareBuilder(); + result.hasUserName = false; + result.userName_ = ""; + return this; + } + } + static LoginRequest() { + object.ReferenceEquals(global::com.BlazeServer.Messages.MessageProtos.Messages.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class CreateRoomRequest : pb::GeneratedMessage { + private CreateRoomRequest() { } + private static readonly CreateRoomRequest defaultInstance = new CreateRoomRequest().MakeReadOnly(); + private static readonly string[] _createRoomRequestFieldNames = new string[] { "room_name" }; + private static readonly uint[] _createRoomRequestFieldTags = new uint[] { 10 }; + public static CreateRoomRequest DefaultInstance { + get { return defaultInstance; } + } + + public override CreateRoomRequest DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override CreateRoomRequest ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_CreateRoomRequest__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_CreateRoomRequest__FieldAccessorTable; } + } + + public const int RoomNameFieldNumber = 1; + private bool hasRoomName; + private string roomName_ = ""; + public bool HasRoomName { + get { return hasRoomName; } + } + public string RoomName { + get { return roomName_; } + } + + public override bool IsInitialized { + get { + if (!hasRoomName) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _createRoomRequestFieldNames; + if (hasRoomName) { + output.WriteString(1, field_names[0], RoomName); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasRoomName) { + size += pb::CodedOutputStream.ComputeStringSize(1, RoomName); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static CreateRoomRequest ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static CreateRoomRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static CreateRoomRequest ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static CreateRoomRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static CreateRoomRequest ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static CreateRoomRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static CreateRoomRequest ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static CreateRoomRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static CreateRoomRequest ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static CreateRoomRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private CreateRoomRequest MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(CreateRoomRequest prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(CreateRoomRequest cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private CreateRoomRequest result; + + private CreateRoomRequest PrepareBuilder() { + if (resultIsReadOnly) { + CreateRoomRequest original = result; + result = new CreateRoomRequest(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override CreateRoomRequest MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::com.BlazeServer.Messages.MessageProtos.CreateRoomRequest.Descriptor; } + } + + public override CreateRoomRequest DefaultInstanceForType { + get { return global::com.BlazeServer.Messages.MessageProtos.CreateRoomRequest.DefaultInstance; } + } + + public override CreateRoomRequest BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is CreateRoomRequest) { + return MergeFrom((CreateRoomRequest) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(CreateRoomRequest other) { + if (other == global::com.BlazeServer.Messages.MessageProtos.CreateRoomRequest.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasRoomName) { + RoomName = other.RoomName; + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_createRoomRequestFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _createRoomRequestFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 10: { + result.hasRoomName = input.ReadString(ref result.roomName_); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasRoomName { + get { return result.hasRoomName; } + } + public string RoomName { + get { return result.RoomName; } + set { SetRoomName(value); } + } + public Builder SetRoomName(string value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasRoomName = true; + result.roomName_ = value; + return this; + } + public Builder ClearRoomName() { + PrepareBuilder(); + result.hasRoomName = false; + result.roomName_ = ""; + return this; + } + } + static CreateRoomRequest() { + object.ReferenceEquals(global::com.BlazeServer.Messages.MessageProtos.Messages.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class LoginResponse : pb::GeneratedMessage { + private LoginResponse() { } + private static readonly LoginResponse defaultInstance = new LoginResponse().MakeReadOnly(); + private static readonly string[] _loginResponseFieldNames = new string[] { "success" }; + private static readonly uint[] _loginResponseFieldTags = new uint[] { 8 }; + public static LoginResponse DefaultInstance { + get { return defaultInstance; } + } + + public override LoginResponse DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override LoginResponse ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_LoginResponse__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_LoginResponse__FieldAccessorTable; } + } + + public const int SuccessFieldNumber = 1; + private bool hasSuccess; + private bool success_; + public bool HasSuccess { + get { return hasSuccess; } + } + public bool Success { + get { return success_; } + } + + public override bool IsInitialized { + get { + if (!hasSuccess) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _loginResponseFieldNames; + if (hasSuccess) { + output.WriteBool(1, field_names[0], Success); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasSuccess) { + size += pb::CodedOutputStream.ComputeBoolSize(1, Success); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static LoginResponse ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static LoginResponse ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static LoginResponse ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static LoginResponse ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static LoginResponse ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static LoginResponse ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static LoginResponse ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static LoginResponse ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static LoginResponse ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static LoginResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private LoginResponse MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(LoginResponse prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(LoginResponse cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private LoginResponse result; + + private LoginResponse PrepareBuilder() { + if (resultIsReadOnly) { + LoginResponse original = result; + result = new LoginResponse(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override LoginResponse MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::com.BlazeServer.Messages.MessageProtos.LoginResponse.Descriptor; } + } + + public override LoginResponse DefaultInstanceForType { + get { return global::com.BlazeServer.Messages.MessageProtos.LoginResponse.DefaultInstance; } + } + + public override LoginResponse BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is LoginResponse) { + return MergeFrom((LoginResponse) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(LoginResponse other) { + if (other == global::com.BlazeServer.Messages.MessageProtos.LoginResponse.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasSuccess) { + Success = other.Success; + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_loginResponseFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _loginResponseFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasSuccess = input.ReadBool(ref result.success_); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasSuccess { + get { return result.hasSuccess; } + } + public bool Success { + get { return result.Success; } + set { SetSuccess(value); } + } + public Builder SetSuccess(bool value) { + PrepareBuilder(); + result.hasSuccess = true; + result.success_ = value; + return this; + } + public Builder ClearSuccess() { + PrepareBuilder(); + result.hasSuccess = false; + result.success_ = false; + return this; + } + } + static LoginResponse() { + object.ReferenceEquals(global::com.BlazeServer.Messages.MessageProtos.Messages.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class TestMessage : pb::GeneratedMessage { + private TestMessage() { } + private static readonly TestMessage defaultInstance = new TestMessage().MakeReadOnly(); + private static readonly string[] _testMessageFieldNames = new string[] { "message_id" }; + private static readonly uint[] _testMessageFieldTags = new uint[] { 8 }; + public static TestMessage DefaultInstance { + get { return defaultInstance; } + } + + public override TestMessage DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override TestMessage ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_TestMessage__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::com.BlazeServer.Messages.MessageProtos.Messages.internal__static_message_TestMessage__FieldAccessorTable; } + } + + public const int MessageIdFieldNumber = 1; + private bool hasMessageId; + private int messageId_; + public bool HasMessageId { + get { return hasMessageId; } + } + public int MessageId { + get { return messageId_; } + } + + public override bool IsInitialized { + get { + if (!hasMessageId) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _testMessageFieldNames; + if (hasMessageId) { + output.WriteInt32(1, field_names[0], MessageId); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasMessageId) { + size += pb::CodedOutputStream.ComputeInt32Size(1, MessageId); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static TestMessage ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static TestMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static TestMessage ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static TestMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static TestMessage ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static TestMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static TestMessage ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static TestMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static TestMessage ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static TestMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private TestMessage MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(TestMessage prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(TestMessage cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private TestMessage result; + + private TestMessage PrepareBuilder() { + if (resultIsReadOnly) { + TestMessage original = result; + result = new TestMessage(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override TestMessage MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::com.BlazeServer.Messages.MessageProtos.TestMessage.Descriptor; } + } + + public override TestMessage DefaultInstanceForType { + get { return global::com.BlazeServer.Messages.MessageProtos.TestMessage.DefaultInstance; } + } + + public override TestMessage BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is TestMessage) { + return MergeFrom((TestMessage) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(TestMessage other) { + if (other == global::com.BlazeServer.Messages.MessageProtos.TestMessage.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasMessageId) { + MessageId = other.MessageId; + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_testMessageFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _testMessageFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasMessageId = input.ReadInt32(ref result.messageId_); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasMessageId { + get { return result.hasMessageId; } + } + public int MessageId { + get { return result.MessageId; } + set { SetMessageId(value); } + } + public Builder SetMessageId(int value) { + PrepareBuilder(); + result.hasMessageId = true; + result.messageId_ = value; + return this; + } + public Builder ClearMessageId() { + PrepareBuilder(); + result.hasMessageId = false; + result.messageId_ = 0; + return this; + } + } + static TestMessage() { + object.ReferenceEquals(global::com.BlazeServer.Messages.MessageProtos.Messages.Descriptor, null); + } + } + + #endregion + +} + +#endregion Designer generated code diff --git a/SocketService.Messages/Properties/AssemblyInfo.cs b/SocketServer.Messages/Properties/AssemblyInfo.cs similarity index 100% rename from SocketService.Messages/Properties/AssemblyInfo.cs rename to SocketServer.Messages/Properties/AssemblyInfo.cs diff --git a/SocketService.Messages/ServerConnectionResponse.cs b/SocketServer.Messages/ServerConnectionResponse.cs similarity index 74% rename from SocketService.Messages/ServerConnectionResponse.cs rename to SocketServer.Messages/ServerConnectionResponse.cs index 558e499..4cbe7d4 100644 --- a/SocketService.Messages/ServerConnectionResponse.cs +++ b/SocketServer.Messages/ServerConnectionResponse.cs @@ -3,20 +3,16 @@ using System.Linq; using System.Text; using SocketServer.Shared.Messaging; -using ProtoBuf; namespace SocketServer.Messages { - [ProtoContract] - public class ServerConnectionResponse : IMessage + public class ServerConnectionResponse : IValidatedMessage { - [ProtoMember(1)] public string MessageID { get; set; } - [ProtoMember(2)] public DiffieHellmanInfo DiffieHellmanInfo { get; diff --git a/SocketService.Messages/SocketServer.Messages.csproj b/SocketServer.Messages/SocketServer.Messages.csproj similarity index 88% rename from SocketService.Messages/SocketServer.Messages.csproj rename to SocketServer.Messages/SocketServer.Messages.csproj index 1da63d0..4013e1d 100644 --- a/SocketService.Messages/SocketServer.Messages.csproj +++ b/SocketServer.Messages/SocketServer.Messages.csproj @@ -65,8 +65,11 @@ false - - E:\dev\Libraries\protobufs\net40\protobuf-net.dll + + E:\dev\Libraries\protobuf\csharp\Debug\v4.0\Google.ProtocolBuffers.dll + + + E:\dev\Libraries\protobuf\csharp\Debug\v4.0\Google.ProtocolBuffers.Serialization.dll @@ -79,17 +82,20 @@ - + - - + {7C9013CF-CEC4-4F7D-B80D-C6FA2E243CF1} SocketServer.Shared + + + + - @@ -491,10 +432,6 @@ - - - - diff --git a/SocketService.Core/Data/ServerDataModel.edmx.sqlce b/SocketServer/Data/ServerDataModel.edmx.sqlce similarity index 89% rename from SocketService.Core/Data/ServerDataModel.edmx.sqlce rename to SocketServer/Data/ServerDataModel.edmx.sqlce index 8c6adc3..4c9c4dc 100644 --- a/SocketService.Core/Data/ServerDataModel.edmx.sqlce +++ b/SocketServer/Data/ServerDataModel.edmx.sqlce @@ -2,8 +2,8 @@ -- -------------------------------------------------- -- Entity Designer DDL Script for SQL Server Compact Edition -- -------------------------------------------------- --- Date Created: 09/26/2011 18:46:02 --- Generated from EDMX file: C:\Users\MonkeyBreath\Desktop\SocketServer\SocketService.Framework\Data\ServerDataModel.edmx +-- Date Created: 02/19/2012 00:42:49 +-- Generated from EDMX file: C:\Users\MonkeyBreath\Desktop\SocketServer\SocketService\Data\ServerDataModel.edmx -- -------------------------------------------------- @@ -12,8 +12,6 @@ -- NOTE: if the constraint does not exist, an ignorable error will be reported. -- -------------------------------------------------- - ALTER TABLE [Rooms] DROP CONSTRAINT [FK_ZoneRoom]; -GO ALTER TABLE [Users] DROP CONSTRAINT [FK_RoomUser]; GO ALTER TABLE [Variables_RoomVariable] DROP CONSTRAINT [FK_RoomRoomVariable]; @@ -34,8 +32,6 @@ GO -- NOTE: if the table does not exist, an ignorable error will be reported. -- -------------------------------------------------- - DROP TABLE [Zones]; -GO DROP TABLE [Rooms]; GO DROP TABLE [Users]; @@ -55,13 +51,6 @@ GO -- Creating all tables -- -------------------------------------------------- --- Creating table 'Zones' -CREATE TABLE [Zones] ( - [Id] bigint NOT NULL, - [Name] nvarchar(4000) NOT NULL -); -GO - -- Creating table 'Rooms' CREATE TABLE [Rooms] ( [Id] bigint NOT NULL, @@ -70,7 +59,7 @@ CREATE TABLE [Rooms] ( [Capacity] int NOT NULL, [IsPrivate] bit NOT NULL, [Password] nvarchar(4000) NOT NULL, - [ZoneId] bigint NOT NULL + [ZoneName] nvarchar(4000) NULL ); GO @@ -79,7 +68,7 @@ CREATE TABLE [Users] ( [Id] bigint NOT NULL, [Name] nvarchar(4000) NOT NULL, [ClientKey] uniqueidentifier NOT NULL, - [RoomId] bigint NOT NULL + [RoomId] bigint NULL ); GO @@ -125,12 +114,6 @@ GO -- Creating all PRIMARY KEY constraints -- -------------------------------------------------- --- Creating primary key on [Id] in table 'Zones' -ALTER TABLE [Zones] -ADD CONSTRAINT [PK_Zones] - PRIMARY KEY ([Id] ); -GO - -- Creating primary key on [Id] in table 'Rooms' ALTER TABLE [Rooms] ADD CONSTRAINT [PK_Rooms] @@ -177,20 +160,6 @@ GO -- Creating all FOREIGN KEY constraints -- -------------------------------------------------- --- Creating foreign key on [ZoneId] in table 'Rooms' -ALTER TABLE [Rooms] -ADD CONSTRAINT [FK_ZoneRoom] - FOREIGN KEY ([ZoneId]) - REFERENCES [Zones] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; - --- Creating non-clustered index for FOREIGN KEY 'FK_ZoneRoom' -CREATE INDEX [IX_FK_ZoneRoom] -ON [Rooms] - ([ZoneId]); -GO - -- Creating foreign key on [RoomId] in table 'Users' ALTER TABLE [Users] ADD CONSTRAINT [FK_RoomUser] diff --git a/SocketService/Data/User.cs b/SocketServer/Data/User.cs similarity index 100% rename from SocketService/Data/User.cs rename to SocketServer/Data/User.cs diff --git a/SocketService/Data/Zone.cs b/SocketServer/Data/Zone.cs similarity index 100% rename from SocketService/Data/Zone.cs rename to SocketServer/Data/Zone.cs diff --git a/SocketService/Handler/CreateRoomRequestHandler.cs b/SocketServer/Handler/CreateRoomRequestHandler.cs similarity index 100% rename from SocketService/Handler/CreateRoomRequestHandler.cs rename to SocketServer/Handler/CreateRoomRequestHandler.cs diff --git a/SocketService/Handler/CreateRoomVariableRequestHandler.cs b/SocketServer/Handler/CreateRoomVariableRequestHandler.cs similarity index 100% rename from SocketService/Handler/CreateRoomVariableRequestHandler.cs rename to SocketServer/Handler/CreateRoomVariableRequestHandler.cs diff --git a/SocketService/Handler/DeleteRoomVariableRequestHandler.cs b/SocketServer/Handler/DeleteRoomVariableRequestHandler.cs similarity index 100% rename from SocketService/Handler/DeleteRoomVariableRequestHandler.cs rename to SocketServer/Handler/DeleteRoomVariableRequestHandler.cs diff --git a/SocketServer/Handler/EnableEncryptionHandler.cs b/SocketServer/Handler/EnableEncryptionHandler.cs new file mode 100644 index 0000000..8fd1633 --- /dev/null +++ b/SocketServer/Handler/EnableEncryptionHandler.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using SocketServer.Messages; +using SocketServer.Shared.Network; +using Org.BouncyCastle.Crypto.Generators; +using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.Security; +using Org.BouncyCastle.Crypto.Parameters; +using SocketServer.Crypto; +using SocketServer.Shared.Messaging; +using com.BlazeServer.Messages.MessageProtos; +using Google.ProtocolBuffers; + +namespace SocketServer.Handler +{ + public class EnableEncryptionHandler : IRequestHandler + { + public void HandleRequest(EnableEncryptionRequest request, ClientConnection connection) + { + EnableEncryptionResponse.Builder newResponse = + EnableEncryptionResponse.CreateBuilder(); + + newResponse + .SetMessageId(1) + .SetSuccess(true); + + newResponse.SetPublickey( + ByteString.CopyFrom( + connection + .ServerAuthority + .GenerateEncodedPublicKeyInfo())); + + EnableEncryptionResponse response = newResponse.Build(); + connection.Send(response); + + if (request.Enable) + { + ((ProtoBuffEnvelope)connection.Envelope) + .EnableEncryption( + connection.ServerAuthority, + request.Publickey.ToArray()); + + } + else + { + ((ProtoBuffEnvelope)connection.Envelope).DisableEncryption(); + } + + } + } +} diff --git a/SocketService/Handler/GetCARequestHandler.cs b/SocketServer/Handler/GetCARequestHandler.cs similarity index 100% rename from SocketService/Handler/GetCARequestHandler.cs rename to SocketServer/Handler/GetCARequestHandler.cs diff --git a/SocketService/Handler/GetKeyParametersRequestHandler.cs b/SocketServer/Handler/GetKeyParametersRequestHandler.cs similarity index 100% rename from SocketService/Handler/GetKeyParametersRequestHandler.cs rename to SocketServer/Handler/GetKeyParametersRequestHandler.cs diff --git a/SocketService/Handler/GetRoomVariableRequestHandler.cs b/SocketServer/Handler/GetRoomVariableRequestHandler.cs similarity index 100% rename from SocketService/Handler/GetRoomVariableRequestHandler.cs rename to SocketServer/Handler/GetRoomVariableRequestHandler.cs diff --git a/SocketService/Handler/IRequestHandler.cs b/SocketServer/Handler/IRequestHandler.cs similarity index 100% rename from SocketService/Handler/IRequestHandler.cs rename to SocketServer/Handler/IRequestHandler.cs diff --git a/SocketService/Handler/ListUsersInRoomRequestHandler.cs b/SocketServer/Handler/ListUsersInRoomRequestHandler.cs similarity index 100% rename from SocketService/Handler/ListUsersInRoomRequestHandler.cs rename to SocketServer/Handler/ListUsersInRoomRequestHandler.cs diff --git a/SocketServer/Handler/LoginRequestHandler.cs b/SocketServer/Handler/LoginRequestHandler.cs new file mode 100644 index 0000000..28794a7 --- /dev/null +++ b/SocketServer/Handler/LoginRequestHandler.cs @@ -0,0 +1,34 @@ +using System; +using System.Linq; +using SocketServer.Command; +using com.BlazeServer.Messages.MessageProtos; +using SocketServer.Shared.Network; +using SocketServer.Repository; +using SocketServer.Data; +using SocketServer.Actions; + +namespace SocketServer.Handler +{ + public class LoginRequestHandler : IRequestHandler + { + public void HandleRequest(LoginRequest request, ClientConnection connection) + { + var success = false; + + // check if user exists + var user = UserRepository.Instance.Query(u => u.Name == request.UserName).FirstOrDefault(); + if (user == null) + { + user = new User() { Name = request.UserName }; + UserRepository.Instance.Add(user); + + success = true; + } + + LoginResponse.Builder newResponse = LoginResponse.CreateBuilder(); + newResponse.SetSuccess(success); + + connection.Send(newResponse.Build()); + } + } +} diff --git a/SocketService/Handler/MessageOneHandler.cs b/SocketServer/Handler/MessageOneHandler.cs similarity index 100% rename from SocketService/Handler/MessageOneHandler.cs rename to SocketServer/Handler/MessageOneHandler.cs diff --git a/SocketService/Handler/NegotiateKeysRequestHandler.cs b/SocketServer/Handler/NegotiateKeysRequestHandler.cs similarity index 100% rename from SocketService/Handler/NegotiateKeysRequestHandler.cs rename to SocketServer/Handler/NegotiateKeysRequestHandler.cs diff --git a/SocketService/Handler/PublicMessageRequestHandler.cs b/SocketServer/Handler/PublicMessageRequestHandler.cs similarity index 100% rename from SocketService/Handler/PublicMessageRequestHandler.cs rename to SocketServer/Handler/PublicMessageRequestHandler.cs diff --git a/SocketService/Handler/ServiceHandler.cs b/SocketServer/Handler/ServiceHandler.cs similarity index 100% rename from SocketService/Handler/ServiceHandler.cs rename to SocketServer/Handler/ServiceHandler.cs diff --git a/SocketService/Handler/UpdateRoomVariableRequestHandler.cs b/SocketServer/Handler/UpdateRoomVariableRequestHandler.cs similarity index 100% rename from SocketService/Handler/UpdateRoomVariableRequestHandler.cs rename to SocketServer/Handler/UpdateRoomVariableRequestHandler.cs diff --git a/SocketService/Messaging/ConnectionResponse.cs b/SocketServer/Messaging/ConnectionResponse.cs similarity index 100% rename from SocketService/Messaging/ConnectionResponse.cs rename to SocketServer/Messaging/ConnectionResponse.cs diff --git a/SocketService/Messaging/DHKeys.cs b/SocketServer/Messaging/DHKeys.cs similarity index 100% rename from SocketService/Messaging/DHKeys.cs rename to SocketServer/Messaging/DHKeys.cs diff --git a/SocketService/Messaging/EncryptedMessageEnvelope.cs b/SocketServer/Messaging/EncryptedMessageEnvelope.cs similarity index 100% rename from SocketService/Messaging/EncryptedMessageEnvelope.cs rename to SocketServer/Messaging/EncryptedMessageEnvelope.cs diff --git a/SocketService/Messaging/IMessage.cs b/SocketServer/Messaging/IMessage.cs similarity index 100% rename from SocketService/Messaging/IMessage.cs rename to SocketServer/Messaging/IMessage.cs diff --git a/SocketService/Messaging/MessageEnvelope.cs b/SocketServer/Messaging/MessageEnvelope.cs similarity index 100% rename from SocketService/Messaging/MessageEnvelope.cs rename to SocketServer/Messaging/MessageEnvelope.cs diff --git a/SocketService/Messaging/PlainEnvelope.cs b/SocketServer/Messaging/PlainEnvelope.cs similarity index 100% rename from SocketService/Messaging/PlainEnvelope.cs rename to SocketServer/Messaging/PlainEnvelope.cs diff --git a/SocketService/Net/Channel.cs b/SocketServer/Net/Channel.cs similarity index 100% rename from SocketService/Net/Channel.cs rename to SocketServer/Net/Channel.cs diff --git a/SocketService/Net/Client/ClientBuffer.cs b/SocketServer/Net/Client/ClientBuffer.cs similarity index 100% rename from SocketService/Net/Client/ClientBuffer.cs rename to SocketServer/Net/Client/ClientBuffer.cs diff --git a/SocketService/Net/Client/ClientConnectArgs.cs.orig b/SocketServer/Net/Client/ClientConnectArgs.cs.orig similarity index 100% rename from SocketService/Net/Client/ClientConnectArgs.cs.orig rename to SocketServer/Net/Client/ClientConnectArgs.cs.orig diff --git a/SocketService/Net/Client/ClientConnection.cs b/SocketServer/Net/Client/ClientConnection.cs similarity index 100% rename from SocketService/Net/Client/ClientConnection.cs rename to SocketServer/Net/Client/ClientConnection.cs diff --git a/SocketService/Net/Client/ClientDisconnectedArgs.cs.orig b/SocketServer/Net/Client/ClientDisconnectedArgs.cs.orig similarity index 100% rename from SocketService/Net/Client/ClientDisconnectedArgs.cs.orig rename to SocketServer/Net/Client/ClientDisconnectedArgs.cs.orig diff --git a/SocketService/Net/Client/ConnectArgs.cs b/SocketServer/Net/Client/ConnectArgs.cs similarity index 100% rename from SocketService/Net/Client/ConnectArgs.cs rename to SocketServer/Net/Client/ConnectArgs.cs diff --git a/SocketService/Net/Client/Connection.cs b/SocketServer/Net/Client/Connection.cs similarity index 100% rename from SocketService/Net/Client/Connection.cs rename to SocketServer/Net/Client/Connection.cs diff --git a/SocketService/Net/Client/ConnectionRepository.cs b/SocketServer/Net/Client/ConnectionRepository.cs similarity index 100% rename from SocketService/Net/Client/ConnectionRepository.cs rename to SocketServer/Net/Client/ConnectionRepository.cs diff --git a/SocketService/Net/Client/DataRecievedArgs.cs b/SocketServer/Net/Client/DataRecievedArgs.cs similarity index 100% rename from SocketService/Net/Client/DataRecievedArgs.cs rename to SocketServer/Net/Client/DataRecievedArgs.cs diff --git a/SocketService/Net/Client/DisconnectedArgs.cs b/SocketServer/Net/Client/DisconnectedArgs.cs similarity index 100% rename from SocketService/Net/Client/DisconnectedArgs.cs rename to SocketServer/Net/Client/DisconnectedArgs.cs diff --git a/SocketService/Net/Client/ISocketServer.cs b/SocketServer/Net/Client/ISocketServer.cs similarity index 100% rename from SocketService/Net/Client/ISocketServer.cs rename to SocketServer/Net/Client/ISocketServer.cs diff --git a/SocketService/Net/Client/ISocketServer.cs.orig b/SocketServer/Net/Client/ISocketServer.cs.orig similarity index 100% rename from SocketService/Net/Client/ISocketServer.cs.orig rename to SocketServer/Net/Client/ISocketServer.cs.orig diff --git a/SocketService/Net/Client/ProtocolState.cs b/SocketServer/Net/Client/ProtocolState.cs similarity index 100% rename from SocketService/Net/Client/ProtocolState.cs rename to SocketServer/Net/Client/ProtocolState.cs diff --git a/SocketService/Net/Client/ServerMessage.cs b/SocketServer/Net/Client/ServerMessage.cs similarity index 100% rename from SocketService/Net/Client/ServerMessage.cs rename to SocketServer/Net/Client/ServerMessage.cs diff --git a/SocketService/Net/Client/SocketDataRecievedArgs.cs.orig b/SocketServer/Net/Client/SocketDataRecievedArgs.cs.orig similarity index 100% rename from SocketService/Net/Client/SocketDataRecievedArgs.cs.orig rename to SocketServer/Net/Client/SocketDataRecievedArgs.cs.orig diff --git a/SocketService/Net/Client/SocketServer.cs.orig b/SocketServer/Net/Client/SocketServer.cs.orig similarity index 100% rename from SocketService/Net/Client/SocketServer.cs.orig rename to SocketServer/Net/Client/SocketServer.cs.orig diff --git a/SocketService/Net/ClientRequestEventArgs.cs b/SocketServer/Net/ClientRequestEventArgs.cs similarity index 100% rename from SocketService/Net/ClientRequestEventArgs.cs rename to SocketServer/Net/ClientRequestEventArgs.cs diff --git a/NewSocketServer/INetworkListener.cs b/SocketServer/Net/INetworkListener.cs similarity index 100% rename from NewSocketServer/INetworkListener.cs rename to SocketServer/Net/INetworkListener.cs diff --git a/NewSocketServer/INetworkTransport.cs b/SocketServer/Net/INetworkTransport.cs similarity index 100% rename from NewSocketServer/INetworkTransport.cs rename to SocketServer/Net/INetworkTransport.cs diff --git a/SocketService/Net/ISocketServer.cs b/SocketServer/Net/ISocketServer.cs similarity index 100% rename from SocketService/Net/ISocketServer.cs rename to SocketServer/Net/ISocketServer.cs diff --git a/SocketService/Net/MessageEventArgs.cs b/SocketServer/Net/MessageEventArgs.cs similarity index 100% rename from SocketService/Net/MessageEventArgs.cs rename to SocketServer/Net/MessageEventArgs.cs diff --git a/SocketService/Net/SocketListener.cs b/SocketServer/Net/SocketListener.cs similarity index 100% rename from SocketService/Net/SocketListener.cs rename to SocketServer/Net/SocketListener.cs diff --git a/SocketServer/Net/SocketManager.cs b/SocketServer/Net/SocketManager.cs new file mode 100644 index 0000000..12e09b2 --- /dev/null +++ b/SocketServer/Net/SocketManager.cs @@ -0,0 +1,150 @@ +using System; +using System.IO; +using System.Linq; +using System.Configuration; +using System.Reflection; +using log4net; +using SocketServer.Command; +using SocketServer.Configuration; +using SocketServer.Net.Client; +using SocketServer.Crypto; +using System.Xml.Serialization; +using SocketServer.Shared.Header; +using SocketServer.Shared; +using System.Collections.Generic; +using SocketServer.Shared.Serialization; +using SocketServer.Shared.Reflection; +using SocketServer.Shared.Network; +using SocketServer.Repository; +using SocketServer.Messages; +using Google.ProtocolBuffers.DescriptorProtos; +using SocketServer.Shared.Messaging; +using com.BlazeServer.Messages.MessageProtos; +using Google.ProtocolBuffers; + +namespace SocketServer.Net +{ + public class SocketManager //: IServerContext + { + private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private Dictionary requestHandlers = new Dictionary(); + + private readonly object handlerLock = new object(); + + private readonly SocketServer _socketServer; + + //public event EventHandler ClientRequestReceived; + + /// + /// Initializes a new instance of the class. + /// + public SocketManager(SocketServerConfiguration config) + { + LoadHandlers(config); + + // TODO: Move filename into configuration + _socketServer = new SocketServer(new MessageRegistry("messages.desc")); + + _socketServer.ClientConnected += SocketServerClientConnecting; + _socketServer.ClientDisconnected += SocketServerClientDisconnecting; + _socketServer.MessageReceived += new EventHandler(socketServer_MessageReceived); + } + + void socketServer_MessageReceived(object sender, MessageEventArgs e) + { + lock (handlerLock) + { + if (requestHandlers.ContainsKey(e.Message.DescriptorForType.FullName)) + { + ServiceHandlerRepository + .Instance + .InvokeHandler( + e.Message.DescriptorForType.FullName, + e.Message, + e.ClientConnection); + } + } + } + + protected void SocketServerClientConnecting(object sender, ConnectArgs e) + { + Logger.InfoFormat("Client {0} connecting from {1}", e.ClientId, e.RemoteAddress); + + e.Connection.ServerAuthority + = ServerAuthorityFactory.CreateServerAuthority(); + + ServerConnectionResponse.Builder newResponse = ServerConnectionResponse.CreateBuilder(); + ServerConnectionResponse.Types.KeyParameters.Builder keyBuilder = ServerConnectionResponse.Types.KeyParameters.CreateBuilder(); + + keyBuilder.SetP(e.Connection.ServerAuthority.P.ToString(16)); + keyBuilder.SetG(e.Connection.ServerAuthority.G.ToString(16)); + + newResponse.SetParameters(keyBuilder.Build()); + newResponse.SetMessageId(23); + e.Connection.Send(newResponse.Build()); + } + + protected void SocketServerClientDisconnecting(object sender, DisconnectedArgs e) + { + MSMQQueueWrapper.QueueCommand(new LogoutUserCommand(e.ClientId)); + } + + //protected virtual void OnClientRequestReceived(Guid clientId, RequestHeader header, object request) + //{ + // EventHandler clientRequestReceived = ClientRequestReceived; + // if (clientRequestReceived != null) + // { + // var args = new ClientRequestEventArgs(clientId, header, request); + // clientRequestReceived(this, args); + // } + //} + + /// + /// Starts the server. + /// + public void StartServer() + { + SocketServerConfiguration configuration = null; + try + { + configuration = ServerConfigurationHelper.GetServerConfiguration(); + } + catch (Exception exception) + { + Logger.Error(exception.ToString()); + } + + if (configuration != null) + { + MSMQQueueWrapper.QueueCommand(new ServerStartingCommand()); + + _socketServer.StartServer(configuration.ListenPort); + + Logger.InfoFormat("Server started and listening on {0}", configuration.ListenPort); + } + } + + /// + /// Stops the server. + /// + public void StopServer() + { + _socketServer.StopServer(); + } + + //private static void ParseRequest(Guid clientId, byte[] requestData) + //{ + // MSMQQueueWrapper.QueueCommand(new ParseRequestCommand(clientId, requestData)); + //} + + + private void LoadHandlers(SocketServerConfiguration config) + { + foreach (RequestHandlerConfigurationElement element in config.Handlers) + { + // try to find enum type first + requestHandlers.Add(element.Key, element); + } + } + } +} \ No newline at end of file diff --git a/SocketService/Net/SocketRepository.cs b/SocketServer/Net/SocketRepository.cs similarity index 100% rename from SocketService/Net/SocketRepository.cs rename to SocketServer/Net/SocketRepository.cs diff --git a/SocketServer/Net/SocketServer.cs b/SocketServer/Net/SocketServer.cs new file mode 100644 index 0000000..9040a2e --- /dev/null +++ b/SocketServer/Net/SocketServer.cs @@ -0,0 +1,235 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Reflection; +using System.Threading; +using SocketServer.Net.Client; +using SocketServer.Shared.Sockets; +using log4net; +using SocketServer.Shared; +using SocketServer.Crypto; +using Org.BouncyCastle.Crypto.Generators; +using Org.BouncyCastle.Security; +using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.Crypto.Parameters; +using SocketServer.Shared.Messaging; +using SocketServer.Shared.Network; +using Google.ProtocolBuffers.DescriptorProtos; +using System.IO; + +namespace SocketServer.Net +{ + public class SocketServer + { + private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private readonly object clientSync = new object(); + //private readonly Mutex _clientListLock = new Mutex(); + + private readonly Dictionary _connectionList = new Dictionary(); + private readonly ManualResetEvent _stopEvent = new ManualResetEvent(false); + + private bool _stopped = true; + + private readonly INetworkListener listener; + + private readonly MessageRegistry registry; + + public SocketServer(IPAddress address, MessageRegistry registry) + { + listener = new SocketListener(address); + this.registry = registry; + } + + public SocketServer(MessageRegistry registry) + { + listener = new SocketListener(); + this.registry = registry; + } + + + /// + /// Gets or sets a value indicating whether this instance is stopped. + /// + /// + /// true if this instance is stopped; otherwise, false. + /// + public bool IsStopped + { + get + { + Thread.MemoryBarrier(); + return _stopped; + } + + set + { + _stopped = value; + Thread.MemoryBarrier(); + } + } + + #region Events + + /// + /// Raised when a Channel has disconnected remotely + /// + public event EventHandler ClientConnected; + + /// + /// Raised when a new incoming Channel has established a connection. + /// + public event EventHandler ClientDisconnected; + + /// + /// Event Raised whenever an incoming message is received + /// + public event EventHandler MessageReceived; + + ///// + ///// Event Raised whenever an outgoing message is sent + ///// + //public event EventHandler MessageSent; + + + #endregion Events + + public void StartServer(int serverPort) + { + if (IsStopped) + { + _stopEvent.Reset(); + + IsStopped = false; + + listener.Initialize(serverPort); + + var serverThread = new Thread(new ThreadStart(ServerMain)); + serverThread.Start(); + } + } + + /// + /// Stops the server. + /// + public void StopServer() + { + _stopEvent.Set(); + + IsStopped = true; + DisconnectAllClients(); + } + + /// + /// Disconnects the client. + /// + /// + public void DisconnectClient(Guid clientId) + { + OnClientDisconnected(this, new DisconnectedArgs() { ClientId = clientId }); + } + + protected virtual void OnClientConnected(Guid clientId, ClientConnection connection, string remoteAddress) + { + EventHandler clientConnected = ClientConnected; + if (clientConnected != null) + { + var args = new ConnectArgs(clientId, connection, remoteAddress); + clientConnected(this, args); + } + } + + protected virtual void OnClientDisconnected(object sender, DisconnectedArgs args) + { + lock (clientSync) + { + // remove channel from our internal list + for (int i = 0; i < _connectionList.Count; i++) + { + if (_connectionList.ContainsKey(args.ClientId)) + { + _connectionList.Remove(args.ClientId); + break; + } + } + + EventHandler handler = ClientDisconnected; + if (handler != null) + handler(this, args); + } + + } + + private void DisconnectAllClients() + { + //lock (clientSync) + { + try + { + foreach (Guid key in _connectionList.Keys) + { + _connectionList[key].Transport.Disconnect(true); + } + } + catch (Exception ex) + { + Logger.ErrorFormat("Error: {0}", ex.Message); + } + } + } + + private void ServerMain() + { + listener.Start(); + + while (!IsStopped) + { + try + { + INetworkTransport client = listener.AcceptClient(); + + if (client != null) + { + ClientConnection channel = ClientConnection.CreateClientConnection( + new ProtoBuffEnvelope(registry), + client); + + channel.ClientId = Guid.NewGuid(); + + Logger.Info("New connection from : " + client.RemoteEndPoint); + + lock (clientSync) + { + _connectionList.Add(channel.ClientId, channel); + } + + OnClientConnected(channel.ClientId, channel, client.RemoteEndPoint.ToString()); + + channel.ClientClosed += OnClientDisconnected; + channel.MessageReceived += OnMessageReceived; + } + } + catch (SocketException) + { + // This is here because AcceptTcpClient throws an exception when we tell it + // stop listening. + Logger.Debug("SocketServer shutdown. No longer accepting connections"); + } + } + + } + + protected void OnMessageReceived(object sender, MessageEventArgs args) + { + EventHandler function = MessageReceived; + if (function != null) + { + function(sender, args); + } + } + + } +} \ No newline at end of file diff --git a/SocketService/Net/SocketTransport.cs b/SocketServer/Net/SocketTransport.cs similarity index 100% rename from SocketService/Net/SocketTransport.cs rename to SocketServer/Net/SocketTransport.cs diff --git a/SocketService/Net/Sockets/ZipSocket.cs b/SocketServer/Net/Sockets/ZipSocket.cs similarity index 100% rename from SocketService/Net/Sockets/ZipSocket.cs rename to SocketServer/Net/Sockets/ZipSocket.cs diff --git a/SocketService/Program.cs b/SocketServer/Program.cs similarity index 100% rename from SocketService/Program.cs rename to SocketServer/Program.cs diff --git a/SocketService/Properties/AssemblyInfo.cs b/SocketServer/Properties/AssemblyInfo.cs similarity index 100% rename from SocketService/Properties/AssemblyInfo.cs rename to SocketServer/Properties/AssemblyInfo.cs diff --git a/SocketService/Referenced Assemblies/BouncyCastle.Crypto.dll b/SocketServer/Referenced Assemblies/BouncyCastle.Crypto.dll similarity index 100% rename from SocketService/Referenced Assemblies/BouncyCastle.Crypto.dll rename to SocketServer/Referenced Assemblies/BouncyCastle.Crypto.dll diff --git a/SocketService/Reflection/ReflectionHelper.cs b/SocketServer/Reflection/ReflectionHelper.cs similarity index 100% rename from SocketService/Reflection/ReflectionHelper.cs rename to SocketServer/Reflection/ReflectionHelper.cs diff --git a/SocketService/Repository/IDataRepository.cs b/SocketServer/Repository/IDataRepository.cs similarity index 100% rename from SocketService/Repository/IDataRepository.cs rename to SocketServer/Repository/IDataRepository.cs diff --git a/SocketService/Repository/RoomRepository.cs b/SocketServer/Repository/RoomRepository.cs similarity index 100% rename from SocketService/Repository/RoomRepository.cs rename to SocketServer/Repository/RoomRepository.cs diff --git a/SocketService/Repository/ServiceHandlerRepository.cs b/SocketServer/Repository/ServiceHandlerRepository.cs similarity index 100% rename from SocketService/Repository/ServiceHandlerRepository.cs rename to SocketServer/Repository/ServiceHandlerRepository.cs diff --git a/SocketService/Repository/UserRepository.cs b/SocketServer/Repository/UserRepository.cs similarity index 100% rename from SocketService/Repository/UserRepository.cs rename to SocketServer/Repository/UserRepository.cs diff --git a/SocketService/Repository/ZoneRepository.cs b/SocketServer/Repository/ZoneRepository.cs similarity index 100% rename from SocketService/Repository/ZoneRepository.cs rename to SocketServer/Repository/ZoneRepository.cs diff --git a/SocketService/Serialization/SerializationExtensions.cs b/SocketServer/Serialization/SerializationExtensions.cs similarity index 100% rename from SocketService/Serialization/SerializationExtensions.cs rename to SocketServer/Serialization/SerializationExtensions.cs diff --git a/SocketService/Serialization/StreamWrapper.cs b/SocketServer/Serialization/StreamWrapper.cs similarity index 100% rename from SocketService/Serialization/StreamWrapper.cs rename to SocketServer/Serialization/StreamWrapper.cs diff --git a/SocketService/ServerControlForm.Designer.cs b/SocketServer/ServerControlForm.Designer.cs similarity index 100% rename from SocketService/ServerControlForm.Designer.cs rename to SocketServer/ServerControlForm.Designer.cs diff --git a/SocketService/ServerControlForm.cs b/SocketServer/ServerControlForm.cs similarity index 100% rename from SocketService/ServerControlForm.cs rename to SocketServer/ServerControlForm.cs diff --git a/SocketService/ServerControlForm.resx b/SocketServer/ServerControlForm.resx similarity index 100% rename from SocketService/ServerControlForm.resx rename to SocketServer/ServerControlForm.resx diff --git a/SocketService/SingletonBase.cs b/SocketServer/SingletonBase.cs similarity index 100% rename from SocketService/SingletonBase.cs rename to SocketServer/SingletonBase.cs diff --git a/SocketService/SocketServer.csproj b/SocketServer/SocketServer.csproj similarity index 91% rename from SocketService/SocketServer.csproj rename to SocketServer/SocketServer.csproj index 1aab795..c1fa1cf 100644 --- a/SocketService/SocketServer.csproj +++ b/SocketServer/SocketServer.csproj @@ -41,6 +41,12 @@ ..\References\BouncyCastle.Crypto.dll + + E:\dev\Libraries\protobuf\csharp\Debug\v4.0\Google.ProtocolBuffers.dll + + + E:\dev\Libraries\protobuf\csharp\Debug\v4.0\Google.ProtocolBuffers.Serialization.dll + ..\References\log4net.dll @@ -69,7 +75,6 @@ - @@ -103,7 +108,6 @@ True - @@ -134,7 +138,6 @@ - Form @@ -160,15 +163,15 @@ - + {4138075A-49CD-4A46-92CB-DFF64A0BB0B6} SocketServer.Crypto - + {9394CA0C-0014-4C8B-8795-3A5C45B254EE} SocketServer.Messages - + {7C9013CF-CEC4-4F7D-B80D-C6FA2E243CF1} SocketServer.Shared @@ -193,6 +196,9 @@ ServerDataModel.Designer.cs + + Always + diff --git a/SocketService/SocketService.Designer.cs b/SocketServer/SocketService.Designer.cs similarity index 100% rename from SocketService/SocketService.Designer.cs rename to SocketServer/SocketService.Designer.cs diff --git a/SocketService/SocketService.cs b/SocketServer/SocketService.cs similarity index 100% rename from SocketService/SocketService.cs rename to SocketServer/SocketService.cs diff --git a/SocketService/SocketService.cs.orig b/SocketServer/SocketService.cs.orig similarity index 100% rename from SocketService/SocketService.cs.orig rename to SocketServer/SocketService.cs.orig diff --git a/SocketService/SocketService.csproj.orig b/SocketServer/SocketService.csproj.orig similarity index 100% rename from SocketService/SocketService.csproj.orig rename to SocketServer/SocketService.csproj.orig diff --git a/SocketService/SocketService.resx b/SocketServer/SocketService.resx similarity index 100% rename from SocketService/SocketService.resx rename to SocketServer/SocketService.resx diff --git a/SocketService/SocketServiceBase.cs b/SocketServer/SocketServiceBase.cs similarity index 100% rename from SocketService/SocketServiceBase.cs rename to SocketServer/SocketServiceBase.cs diff --git a/SocketService/SocketServiceInstaller.cs b/SocketServer/SocketServiceInstaller.cs similarity index 100% rename from SocketService/SocketServiceInstaller.cs rename to SocketServer/SocketServiceInstaller.cs diff --git a/SocketServer/addressbook.desc b/SocketServer/addressbook.desc new file mode 100644 index 0000000..b4ee9f7 Binary files /dev/null and b/SocketServer/addressbook.desc differ diff --git a/SocketService/app.config b/SocketServer/app.config similarity index 75% rename from SocketService/app.config rename to SocketServer/app.config index 74ffe34..31b8629 100644 --- a/SocketService/app.config +++ b/SocketServer/app.config @@ -68,21 +68,12 @@ - - - - - + diff --git a/SocketService/app.config.orig b/SocketServer/app.config.orig similarity index 100% rename from SocketService/app.config.orig rename to SocketServer/app.config.orig diff --git a/SocketServer/messages.desc b/SocketServer/messages.desc new file mode 100644 index 0000000..561f750 --- /dev/null +++ b/SocketServer/messages.desc @@ -0,0 +1,31 @@ + +— +messages.protomessage"P +EnableEncryptionRequest + +message_id ( +enable ( + publickey ( "R +EnableEncryptionResponse + +message_id ( +success ( + publickey ( "š +ServerConnectionResponse + +message_id (C + +parameters ( 2/.message.ServerConnectionResponse.KeyParameters% + KeyParameters +g (  +p ( "! + LoginRequest + user_name ( "& +CreateRoomRequest + room_name ( " + LoginResponse +success ("! + TestMessage + +message_id (B) +com.BlazeServer.MessagesB MessageProtos \ No newline at end of file diff --git a/SocketService.Core/App.Config b/SocketService.Core/App.Config deleted file mode 100644 index 4f78a04..0000000 --- a/SocketService.Core/App.Config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/SocketService.Core/Configuration/MessageQueueCollection.cs b/SocketService.Core/Configuration/MessageQueueCollection.cs deleted file mode 100644 index db1d4eb..0000000 --- a/SocketService.Core/Configuration/MessageQueueCollection.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Core.Configuration -{ - public class MessageQueueCollection : ConfigurationElementCollection - { - public MessageQueueCollection() - { - } - - public MessageQueueConfigurationElement this[int index] - { - get { return (MessageQueueConfigurationElement)BaseGet(index); } - set - { - if (BaseGet(index) != null) - { - BaseRemoveAt(index); - } - BaseAdd(index, value); - } - } - - public void Add(MessageQueueConfigurationElement element) - { - BaseAdd(element); - } - - public void Clear() - { - BaseClear(); - } - - protected override ConfigurationElement CreateNewElement() - { - return new MessageQueueConfigurationElement(); - } - - protected override object GetElementKey(ConfigurationElement element) - { - return ((MessageQueueConfigurationElement)element).QueueName; - } - - public void Remove(MessageQueueConfigurationElement element) - { - BaseRemove(element.QueueName); - } - - public void RemoveAt(int index) - { - BaseRemoveAt(index); - } - - public void Remove(string name) - { - BaseRemove(name); - } - } -} diff --git a/SocketService.Core/Configuration/MessageQueueConfigurationElement.cs b/SocketService.Core/Configuration/MessageQueueConfigurationElement.cs deleted file mode 100644 index fa121e3..0000000 --- a/SocketService.Core/Configuration/MessageQueueConfigurationElement.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Core.Configuration -{ - public class MessageQueueConfigurationElement : ConfigurationElement - { - public MessageQueueConfigurationElement() - { - } - - public MessageQueueConfigurationElement(String queueKey, String queueName) - { - QueueName = queueKey; - QueuePath = queueName; - } - - [ConfigurationProperty("name", IsRequired = true)] - public String QueueName - { - get - { return (String)this["name"]; } - set - { this["name"] = value; } - } - - [ConfigurationProperty("path", IsRequired = true)] - public String QueuePath - { - get - { return (String)this["path"]; } - set - { this["path"] = value; } - } - - } -} diff --git a/SocketService.Core/Configuration/PluginInfoInstanceCollection.cs b/SocketService.Core/Configuration/PluginInfoInstanceCollection.cs deleted file mode 100644 index 63c1e05..0000000 --- a/SocketService.Core/Configuration/PluginInfoInstanceCollection.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Configuration; - -namespace SocketServer.Core.Configuration -{ - public class PluginInfoInstanceCollection : ConfigurationElementCollection - { - protected override ConfigurationElement CreateNewElement() - { - return new PluginInfoInstanceElement(); - } - - protected override object GetElementKey(ConfigurationElement element) - { - return ((PluginInfoInstanceElement) element).Name; - } - } -} \ No newline at end of file diff --git a/SocketService.Core/Configuration/PluginInfoInstanceElement.cs b/SocketService.Core/Configuration/PluginInfoInstanceElement.cs deleted file mode 100644 index e0d4146..0000000 --- a/SocketService.Core/Configuration/PluginInfoInstanceElement.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Configuration; - -namespace SocketServer.Core.Configuration -{ - public class PluginInfoInstanceElement : ConfigurationElement - { - [ConfigurationProperty("name", IsKey = true, IsRequired = true)] - public string Name - { - get { return (string) base["name"]; } - set { base["name"] = value; } - } - - [ConfigurationProperty("path", IsRequired = true)] - public string Path - { - get { return (string) base["path"]; } - set { base["path"] = value; } - } - } -} \ No newline at end of file diff --git a/SocketService.Core/Configuration/RequestHandlerCollection.cs b/SocketService.Core/Configuration/RequestHandlerCollection.cs deleted file mode 100644 index cf51449..0000000 --- a/SocketService.Core/Configuration/RequestHandlerCollection.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Core.Configuration -{ - public class RequestHandlerCollection : ConfigurationElementCollection - { - public RequestHandlerCollection() - { - } - - public RequestHandlerConfigurationElement this[int index] - { - get { return (RequestHandlerConfigurationElement)BaseGet(index); } - set - { - if (BaseGet(index) != null) - { - BaseRemoveAt(index); - } - BaseAdd(index, value); - } - } - - public void Add(RequestHandlerConfigurationElement serviceConfig) - { - BaseAdd(serviceConfig); - } - - public void Clear() - { - BaseClear(); - } - - protected override ConfigurationElement CreateNewElement() - { - return new RequestHandlerConfigurationElement(); - } - - protected override object GetElementKey(ConfigurationElement element) - { - return ((RequestHandlerConfigurationElement)element).RequestType; - } - - public void Remove(RequestHandlerConfigurationElement serviceConfig) - { - BaseRemove(serviceConfig.RequestType); - } - - public void RemoveAt(int index) - { - BaseRemoveAt(index); - } - - public void Remove(string name) - { - BaseRemove(name); - } - } -} diff --git a/SocketService.Core/Configuration/RequestHandlerConfigurationElement.cs b/SocketService.Core/Configuration/RequestHandlerConfigurationElement.cs deleted file mode 100644 index f91a2cf..0000000 --- a/SocketService.Core/Configuration/RequestHandlerConfigurationElement.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Core.Configuration -{ - public class RequestHandlerConfigurationElement : ConfigurationElement - { - public RequestHandlerConfigurationElement() - { - } - - public RequestHandlerConfigurationElement(String requestTypeTag, String requestType, String handlerType) - { - Key = requestTypeTag; - HandlerType = handlerType; - RequestType = requestType; - } - - [ConfigurationProperty("key", IsRequired = true)] - public String Key - { - get - { return (String)this["key"]; } - set - { this["key"] = value; } - } - - [ConfigurationProperty("requestType", IsRequired = true)] - public String RequestType - { - get - { return (String)this["requestType"]; } - set - { this["requestType"] = value; } - } - - [ConfigurationProperty("handlerType", IsRequired = true)] - public String HandlerType - { - get - { return (String)this["handlerType"]; } - set - { this["handlerType"] = value; } - } - } -} diff --git a/SocketService.Core/Configuration/RequestHandlerConfigurationSection.cs b/SocketService.Core/Configuration/RequestHandlerConfigurationSection.cs deleted file mode 100644 index 0bd697e..0000000 --- a/SocketService.Core/Configuration/RequestHandlerConfigurationSection.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Configuration; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer.Core.Configuration -{ - public class RequestHandlerConfigurationSection : ConfigurationSection - { - [ConfigurationProperty("Handlers", IsDefaultCollection = false)] - [ConfigurationCollection(typeof(RequestHandlerCollection), - AddItemName = "add", - ClearItemsName = "clear", - RemoveItemName = "remove")] - public RequestHandlerCollection Handlers - { - get - { - return (RequestHandlerCollection)base["Handlers"]; - } - } - } -} diff --git a/SocketService.Core/Configuration/SocketServerConfiguration.cs b/SocketService.Core/Configuration/SocketServerConfiguration.cs deleted file mode 100644 index 8e3219a..0000000 --- a/SocketService.Core/Configuration/SocketServerConfiguration.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Configuration; - -namespace SocketServer.Core.Configuration -{ - public class SocketServerConfiguration : ConfigurationSection - { - [ConfigurationProperty("Plugins", IsRequired = true, IsDefaultCollection = true)] - public PluginInfoInstanceCollection Plugins - { - get { return (PluginInfoInstanceCollection) this["Plugins"]; } - set { this["Plugins"] = value; } - } - - [ConfigurationProperty("ListenPort", IsRequired = true)] - public int ListenPort - { - get { return (int) this["ListenPort"]; } - set { this["ListenPort"] = value; } - } - - [ConfigurationProperty("Handlers", IsDefaultCollection = false)] - [ConfigurationCollection(typeof(RequestHandlerCollection), - AddItemName = "add", - ClearItemsName = "clear", - RemoveItemName = "remove")] - public RequestHandlerCollection Handlers - { - get - { - return (RequestHandlerCollection)base["Handlers"]; - } - } - - [ConfigurationProperty("Queues", IsDefaultCollection = false)] - [ConfigurationCollection(typeof(MessageQueueCollection), - AddItemName = "add", - ClearItemsName = "clear", - RemoveItemName = "remove")] - public MessageQueueCollection Queues - { - get - { - return (MessageQueueCollection)base["Queues"]; - } - } - } -} \ No newline at end of file diff --git a/SocketService.Core/Configuration/SocketServiceConfiguration.cs b/SocketService.Core/Configuration/SocketServiceConfiguration.cs deleted file mode 100644 index 92f9b62..0000000 --- a/SocketService.Core/Configuration/SocketServiceConfiguration.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Configuration; - -namespace SocketServer.Core.Configuration -{ - public class SocketServiceConfiguration : ConfigurationSection - { - [ConfigurationProperty("Plugins", IsRequired = true, IsDefaultCollection = true)] - public PluginInfoInstanceCollection Plugins - { - get { return (PluginInfoInstanceCollection) this["Plugins"]; } - set { this["Plugins"] = value; } - } - - [ConfigurationProperty("ListenPort", IsRequired = true)] - public int ListenPort - { - get { return (int) this["ListenPort"]; } - set { this["ListenPort"] = value; } - } - } -} \ No newline at end of file diff --git a/SocketService.Core/Data/AutoIdElement.cs b/SocketService.Core/Data/AutoIdElement.cs deleted file mode 100644 index 95b11db..0000000 --- a/SocketService.Core/Data/AutoIdElement.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace SocketServer.Core.Data -{ - public class AutoIdElement - { - private static readonly object LockObject = new object(); - - private static long _nextId = -1; - - public static long GetNextID() - { - lock (LockObject) - { - if (_nextId == -1) _nextId = DateTime.UtcNow.Ticks; else _nextId++; - return _nextId; - } - } - } -} diff --git a/SocketService.Core/Data/DatabaseContextFactory.cs b/SocketService.Core/Data/DatabaseContextFactory.cs deleted file mode 100644 index 5d58db0..0000000 --- a/SocketService.Core/Data/DatabaseContextFactory.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SocketServer.Core.Data -{ - public class DatabaseContextFactory - { - private static ServerDataEntities _context; - public static ServerDataEntities Context - { - get { return _context ?? (_context = new ServerDataEntities()); } - } - } -} diff --git a/SocketService.Core/Data/Room.cs b/SocketService.Core/Data/Room.cs deleted file mode 100644 index cbbbf76..0000000 --- a/SocketService.Core/Data/Room.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace SocketServer.Core.Data -{ - public partial class Room - { - public Room() - { - Id = AutoIdElement.GetNextID(); - } - } -} diff --git a/SocketService.Core/Data/RoomVariable.cs b/SocketService.Core/Data/RoomVariable.cs deleted file mode 100644 index 340bb3f..0000000 --- a/SocketService.Core/Data/RoomVariable.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace SocketServer.Core.Data -{ - public partial class RoomVariable - { - public RoomVariable() - { - Id = AutoIdElement.GetNextID(); - } - } -} diff --git a/SocketService.Core/Data/ServerDataModel.Designer.cs b/SocketService.Core/Data/ServerDataModel.Designer.cs deleted file mode 100644 index db619f5..0000000 --- a/SocketService.Core/Data/ServerDataModel.Designer.cs +++ /dev/null @@ -1,1480 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated from a template. -// -// Manual changes to this file may cause unexpected behavior in your application. -// Manual changes to this file will be overwritten if the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Data.Objects; -using System.Data.Objects.DataClasses; -using System.Data.EntityClient; -using System.ComponentModel; -using System.Xml.Serialization; -using System.Runtime.Serialization; - -[assembly: EdmSchemaAttribute()] -#region EDM Relationship Metadata - -[assembly: EdmRelationshipAttribute("ServerDataModel", "ZoneRoom", "Zone", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(SocketServer.Core.Data.Zone), "Room", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(SocketServer.Core.Data.Room), true)] -[assembly: EdmRelationshipAttribute("ServerDataModel", "RoomUser", "Room", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(SocketServer.Core.Data.Room), "User", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(SocketServer.Core.Data.User), true)] -[assembly: EdmRelationshipAttribute("ServerDataModel", "RoomRoomVariable", "Room", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(SocketServer.Core.Data.Room), "RoomVariable", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(SocketServer.Core.Data.RoomVariable), true)] -[assembly: EdmRelationshipAttribute("ServerDataModel", "UserUserVariable", "User", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(SocketServer.Core.Data.User), "UserVariable", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(SocketServer.Core.Data.UserVariable), true)] -[assembly: EdmRelationshipAttribute("ServerDataModel", "ExtensionPlugin", "Extension", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(SocketServer.Core.Data.Extension), "Plugin", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(SocketServer.Core.Data.Plugin), true)] -[assembly: EdmRelationshipAttribute("ServerDataModel", "RoomPlugin", "Room", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(SocketServer.Core.Data.Room), "Plugin", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(SocketServer.Core.Data.Plugin), true)] - -#endregion - -namespace SocketServer.Core.Data -{ - #region Contexts - - /// - /// No Metadata Documentation available. - /// - public partial class ServerDataEntities : ObjectContext - { - #region Constructors - - /// - /// Initializes a new ServerDataEntities object using the connection string found in the 'ServerDataEntities' section of the application configuration file. - /// - public ServerDataEntities() : base("name=ServerDataEntities", "ServerDataEntities") - { - this.ContextOptions.LazyLoadingEnabled = true; - OnContextCreated(); - } - - /// - /// Initialize a new ServerDataEntities object. - /// - public ServerDataEntities(string connectionString) : base(connectionString, "ServerDataEntities") - { - this.ContextOptions.LazyLoadingEnabled = true; - OnContextCreated(); - } - - /// - /// Initialize a new ServerDataEntities object. - /// - public ServerDataEntities(EntityConnection connection) : base(connection, "ServerDataEntities") - { - this.ContextOptions.LazyLoadingEnabled = true; - OnContextCreated(); - } - - #endregion - - #region Partial Methods - - partial void OnContextCreated(); - - #endregion - - #region ObjectSet Properties - - /// - /// No Metadata Documentation available. - /// - public ObjectSet Zones - { - get - { - if ((_Zones == null)) - { - _Zones = base.CreateObjectSet("Zones"); - } - return _Zones; - } - } - private ObjectSet _Zones; - - /// - /// No Metadata Documentation available. - /// - public ObjectSet Rooms - { - get - { - if ((_Rooms == null)) - { - _Rooms = base.CreateObjectSet("Rooms"); - } - return _Rooms; - } - } - private ObjectSet _Rooms; - - /// - /// No Metadata Documentation available. - /// - public ObjectSet Users - { - get - { - if ((_Users == null)) - { - _Users = base.CreateObjectSet("Users"); - } - return _Users; - } - } - private ObjectSet _Users; - - /// - /// No Metadata Documentation available. - /// - public ObjectSet Variables - { - get - { - if ((_Variables == null)) - { - _Variables = base.CreateObjectSet("Variables"); - } - return _Variables; - } - } - private ObjectSet _Variables; - - /// - /// No Metadata Documentation available. - /// - public ObjectSet Extensions - { - get - { - if ((_Extensions == null)) - { - _Extensions = base.CreateObjectSet("Extensions"); - } - return _Extensions; - } - } - private ObjectSet _Extensions; - - /// - /// No Metadata Documentation available. - /// - public ObjectSet Plugins - { - get - { - if ((_Plugins == null)) - { - _Plugins = base.CreateObjectSet("Plugins"); - } - return _Plugins; - } - } - private ObjectSet _Plugins; - - #endregion - #region AddTo Methods - - /// - /// Deprecated Method for adding a new object to the Zones EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. - /// - public void AddToZones(Zone zone) - { - base.AddObject("Zones", zone); - } - - /// - /// Deprecated Method for adding a new object to the Rooms EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. - /// - public void AddToRooms(Room room) - { - base.AddObject("Rooms", room); - } - - /// - /// Deprecated Method for adding a new object to the Users EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. - /// - public void AddToUsers(User user) - { - base.AddObject("Users", user); - } - - /// - /// Deprecated Method for adding a new object to the Variables EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. - /// - public void AddToVariables(Variable variable) - { - base.AddObject("Variables", variable); - } - - /// - /// Deprecated Method for adding a new object to the Extensions EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. - /// - public void AddToExtensions(Extension extension) - { - base.AddObject("Extensions", extension); - } - - /// - /// Deprecated Method for adding a new object to the Plugins EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. - /// - public void AddToPlugins(Plugin plugin) - { - base.AddObject("Plugins", plugin); - } - - #endregion - } - - - #endregion - - #region Entities - - /// - /// No Metadata Documentation available. - /// - [EdmEntityTypeAttribute(NamespaceName="ServerDataModel", Name="Extension")] - [Serializable()] - [DataContractAttribute(IsReference=true)] - public partial class Extension : EntityObject - { - #region Factory Method - - /// - /// Create a new Extension object. - /// - /// Initial value of the Id property. - /// Initial value of the Name property. - public static Extension CreateExtension(global::System.Int64 id, global::System.String name) - { - Extension extension = new Extension(); - extension.Id = id; - extension.Name = name; - return extension; - } - - #endregion - #region Primitive Properties - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 Id - { - get - { - return _Id; - } - set - { - if (_Id != value) - { - OnIdChanging(value); - ReportPropertyChanging("Id"); - _Id = StructuralObject.SetValidValue(value); - ReportPropertyChanged("Id"); - OnIdChanged(); - } - } - } - private global::System.Int64 _Id; - partial void OnIdChanging(global::System.Int64 value); - partial void OnIdChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.String Name - { - get - { - return _Name; - } - set - { - OnNameChanging(value); - ReportPropertyChanging("Name"); - _Name = StructuralObject.SetValidValue(value, false); - ReportPropertyChanged("Name"); - OnNameChanged(); - } - } - private global::System.String _Name; - partial void OnNameChanging(global::System.String value); - partial void OnNameChanged(); - - #endregion - - #region Navigation Properties - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "ExtensionPlugin", "Plugin")] - public EntityCollection Plugins - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection("ServerDataModel.ExtensionPlugin", "Plugin"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection("ServerDataModel.ExtensionPlugin", "Plugin", value); - } - } - } - - #endregion - } - - /// - /// No Metadata Documentation available. - /// - [EdmEntityTypeAttribute(NamespaceName="ServerDataModel", Name="Plugin")] - [Serializable()] - [DataContractAttribute(IsReference=true)] - public partial class Plugin : EntityObject - { - #region Factory Method - - /// - /// Create a new Plugin object. - /// - /// Initial value of the Id property. - /// Initial value of the Handle property. - /// Initial value of the ExtensionId property. - /// Initial value of the RoomId property. - public static Plugin CreatePlugin(global::System.Int64 id, global::System.String handle, global::System.Int64 extensionId, global::System.Int64 roomId) - { - Plugin plugin = new Plugin(); - plugin.Id = id; - plugin.Handle = handle; - plugin.ExtensionId = extensionId; - plugin.RoomId = roomId; - return plugin; - } - - #endregion - #region Primitive Properties - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 Id - { - get - { - return _Id; - } - set - { - if (_Id != value) - { - OnIdChanging(value); - ReportPropertyChanging("Id"); - _Id = StructuralObject.SetValidValue(value); - ReportPropertyChanged("Id"); - OnIdChanged(); - } - } - } - private global::System.Int64 _Id; - partial void OnIdChanging(global::System.Int64 value); - partial void OnIdChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.String Handle - { - get - { - return _Handle; - } - set - { - OnHandleChanging(value); - ReportPropertyChanging("Handle"); - _Handle = StructuralObject.SetValidValue(value, false); - ReportPropertyChanged("Handle"); - OnHandleChanged(); - } - } - private global::System.String _Handle; - partial void OnHandleChanging(global::System.String value); - partial void OnHandleChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 ExtensionId - { - get - { - return _ExtensionId; - } - set - { - OnExtensionIdChanging(value); - ReportPropertyChanging("ExtensionId"); - _ExtensionId = StructuralObject.SetValidValue(value); - ReportPropertyChanged("ExtensionId"); - OnExtensionIdChanged(); - } - } - private global::System.Int64 _ExtensionId; - partial void OnExtensionIdChanging(global::System.Int64 value); - partial void OnExtensionIdChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 RoomId - { - get - { - return _RoomId; - } - set - { - OnRoomIdChanging(value); - ReportPropertyChanging("RoomId"); - _RoomId = StructuralObject.SetValidValue(value); - ReportPropertyChanged("RoomId"); - OnRoomIdChanged(); - } - } - private global::System.Int64 _RoomId; - partial void OnRoomIdChanging(global::System.Int64 value); - partial void OnRoomIdChanged(); - - #endregion - - #region Navigation Properties - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "ExtensionPlugin", "Extension")] - public Extension Extension - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.ExtensionPlugin", "Extension").Value; - } - set - { - ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.ExtensionPlugin", "Extension").Value = value; - } - } - /// - /// No Metadata Documentation available. - /// - [BrowsableAttribute(false)] - [DataMemberAttribute()] - public EntityReference ExtensionReference - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.ExtensionPlugin", "Extension"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference("ServerDataModel.ExtensionPlugin", "Extension", value); - } - } - } - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "RoomPlugin", "Room")] - public Room Room - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomPlugin", "Room").Value; - } - set - { - ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomPlugin", "Room").Value = value; - } - } - /// - /// No Metadata Documentation available. - /// - [BrowsableAttribute(false)] - [DataMemberAttribute()] - public EntityReference RoomReference - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomPlugin", "Room"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference("ServerDataModel.RoomPlugin", "Room", value); - } - } - } - - #endregion - } - - /// - /// No Metadata Documentation available. - /// - [EdmEntityTypeAttribute(NamespaceName="ServerDataModel", Name="Room")] - [Serializable()] - [DataContractAttribute(IsReference=true)] - public partial class Room : EntityObject - { - #region Factory Method - - /// - /// Create a new Room object. - /// - /// Initial value of the Id property. - /// Initial value of the Name property. - /// Initial value of the IsPersistable property. - /// Initial value of the Capacity property. - /// Initial value of the IsPrivate property. - /// Initial value of the Password property. - /// Initial value of the ZoneId property. - public static Room CreateRoom(global::System.Int64 id, global::System.String name, global::System.Boolean isPersistable, global::System.Int32 capacity, global::System.Boolean isPrivate, global::System.String password, global::System.Int64 zoneId) - { - Room room = new Room(); - room.Id = id; - room.Name = name; - room.IsPersistable = isPersistable; - room.Capacity = capacity; - room.IsPrivate = isPrivate; - room.Password = password; - room.ZoneId = zoneId; - return room; - } - - #endregion - #region Primitive Properties - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 Id - { - get - { - return _Id; - } - set - { - if (_Id != value) - { - OnIdChanging(value); - ReportPropertyChanging("Id"); - _Id = StructuralObject.SetValidValue(value); - ReportPropertyChanged("Id"); - OnIdChanged(); - } - } - } - private global::System.Int64 _Id; - partial void OnIdChanging(global::System.Int64 value); - partial void OnIdChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.String Name - { - get - { - return _Name; - } - set - { - OnNameChanging(value); - ReportPropertyChanging("Name"); - _Name = StructuralObject.SetValidValue(value, false); - ReportPropertyChanged("Name"); - OnNameChanged(); - } - } - private global::System.String _Name; - partial void OnNameChanging(global::System.String value); - partial void OnNameChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Boolean IsPersistable - { - get - { - return _IsPersistable; - } - set - { - OnIsPersistableChanging(value); - ReportPropertyChanging("IsPersistable"); - _IsPersistable = StructuralObject.SetValidValue(value); - ReportPropertyChanged("IsPersistable"); - OnIsPersistableChanged(); - } - } - private global::System.Boolean _IsPersistable; - partial void OnIsPersistableChanging(global::System.Boolean value); - partial void OnIsPersistableChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int32 Capacity - { - get - { - return _Capacity; - } - set - { - OnCapacityChanging(value); - ReportPropertyChanging("Capacity"); - _Capacity = StructuralObject.SetValidValue(value); - ReportPropertyChanged("Capacity"); - OnCapacityChanged(); - } - } - private global::System.Int32 _Capacity; - partial void OnCapacityChanging(global::System.Int32 value); - partial void OnCapacityChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Boolean IsPrivate - { - get - { - return _IsPrivate; - } - set - { - OnIsPrivateChanging(value); - ReportPropertyChanging("IsPrivate"); - _IsPrivate = StructuralObject.SetValidValue(value); - ReportPropertyChanged("IsPrivate"); - OnIsPrivateChanged(); - } - } - private global::System.Boolean _IsPrivate; - partial void OnIsPrivateChanging(global::System.Boolean value); - partial void OnIsPrivateChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.String Password - { - get - { - return _Password; - } - set - { - OnPasswordChanging(value); - ReportPropertyChanging("Password"); - _Password = StructuralObject.SetValidValue(value, false); - ReportPropertyChanged("Password"); - OnPasswordChanged(); - } - } - private global::System.String _Password; - partial void OnPasswordChanging(global::System.String value); - partial void OnPasswordChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 ZoneId - { - get - { - return _ZoneId; - } - set - { - OnZoneIdChanging(value); - ReportPropertyChanging("ZoneId"); - _ZoneId = StructuralObject.SetValidValue(value); - ReportPropertyChanged("ZoneId"); - OnZoneIdChanged(); - } - } - private global::System.Int64 _ZoneId; - partial void OnZoneIdChanging(global::System.Int64 value); - partial void OnZoneIdChanged(); - - #endregion - - #region Navigation Properties - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "ZoneRoom", "Zone")] - public Zone Zone - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.ZoneRoom", "Zone").Value; - } - set - { - ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.ZoneRoom", "Zone").Value = value; - } - } - /// - /// No Metadata Documentation available. - /// - [BrowsableAttribute(false)] - [DataMemberAttribute()] - public EntityReference ZoneReference - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.ZoneRoom", "Zone"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference("ServerDataModel.ZoneRoom", "Zone", value); - } - } - } - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "RoomUser", "User")] - public EntityCollection Users - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection("ServerDataModel.RoomUser", "User"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection("ServerDataModel.RoomUser", "User", value); - } - } - } - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "RoomRoomVariable", "RoomVariable")] - public EntityCollection RoomVariables - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection("ServerDataModel.RoomRoomVariable", "RoomVariable"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection("ServerDataModel.RoomRoomVariable", "RoomVariable", value); - } - } - } - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "RoomPlugin", "Plugin")] - public EntityCollection Plugins - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection("ServerDataModel.RoomPlugin", "Plugin"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection("ServerDataModel.RoomPlugin", "Plugin", value); - } - } - } - - #endregion - } - - /// - /// No Metadata Documentation available. - /// - [EdmEntityTypeAttribute(NamespaceName="ServerDataModel", Name="RoomVariable")] - [Serializable()] - [DataContractAttribute(IsReference=true)] - public partial class RoomVariable : Variable - { - #region Factory Method - - /// - /// Create a new RoomVariable object. - /// - /// Initial value of the Id property. - /// Initial value of the Name property. - /// Initial value of the Value property. - /// Initial value of the RoomId property. - public static RoomVariable CreateRoomVariable(global::System.Int64 id, global::System.String name, global::System.Byte[] value, global::System.Int64 roomId) - { - RoomVariable roomVariable = new RoomVariable(); - roomVariable.Id = id; - roomVariable.Name = name; - roomVariable.Value = value; - roomVariable.RoomId = roomId; - return roomVariable; - } - - #endregion - #region Primitive Properties - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 RoomId - { - get - { - return _RoomId; - } - set - { - OnRoomIdChanging(value); - ReportPropertyChanging("RoomId"); - _RoomId = StructuralObject.SetValidValue(value); - ReportPropertyChanged("RoomId"); - OnRoomIdChanged(); - } - } - private global::System.Int64 _RoomId; - partial void OnRoomIdChanging(global::System.Int64 value); - partial void OnRoomIdChanged(); - - #endregion - - #region Navigation Properties - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "RoomRoomVariable", "Room")] - public Room Room - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomRoomVariable", "Room").Value; - } - set - { - ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomRoomVariable", "Room").Value = value; - } - } - /// - /// No Metadata Documentation available. - /// - [BrowsableAttribute(false)] - [DataMemberAttribute()] - public EntityReference RoomReference - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomRoomVariable", "Room"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference("ServerDataModel.RoomRoomVariable", "Room", value); - } - } - } - - #endregion - } - - /// - /// No Metadata Documentation available. - /// - [EdmEntityTypeAttribute(NamespaceName="ServerDataModel", Name="User")] - [Serializable()] - [DataContractAttribute(IsReference=true)] - public partial class User : EntityObject - { - #region Factory Method - - /// - /// Create a new User object. - /// - /// Initial value of the Id property. - /// Initial value of the Name property. - /// Initial value of the ClientKey property. - /// Initial value of the RoomId property. - public static User CreateUser(global::System.Int64 id, global::System.String name, global::System.Guid clientKey, global::System.Int64 roomId) - { - User user = new User(); - user.Id = id; - user.Name = name; - user.ClientKey = clientKey; - user.RoomId = roomId; - return user; - } - - #endregion - #region Primitive Properties - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 Id - { - get - { - return _Id; - } - set - { - if (_Id != value) - { - OnIdChanging(value); - ReportPropertyChanging("Id"); - _Id = StructuralObject.SetValidValue(value); - ReportPropertyChanged("Id"); - OnIdChanged(); - } - } - } - private global::System.Int64 _Id; - partial void OnIdChanging(global::System.Int64 value); - partial void OnIdChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.String Name - { - get - { - return _Name; - } - set - { - OnNameChanging(value); - ReportPropertyChanging("Name"); - _Name = StructuralObject.SetValidValue(value, false); - ReportPropertyChanged("Name"); - OnNameChanged(); - } - } - private global::System.String _Name; - partial void OnNameChanging(global::System.String value); - partial void OnNameChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Guid ClientKey - { - get - { - return _ClientKey; - } - set - { - OnClientKeyChanging(value); - ReportPropertyChanging("ClientKey"); - _ClientKey = StructuralObject.SetValidValue(value); - ReportPropertyChanged("ClientKey"); - OnClientKeyChanged(); - } - } - private global::System.Guid _ClientKey; - partial void OnClientKeyChanging(global::System.Guid value); - partial void OnClientKeyChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 RoomId - { - get - { - return _RoomId; - } - set - { - OnRoomIdChanging(value); - ReportPropertyChanging("RoomId"); - _RoomId = StructuralObject.SetValidValue(value); - ReportPropertyChanged("RoomId"); - OnRoomIdChanged(); - } - } - private global::System.Int64 _RoomId; - partial void OnRoomIdChanging(global::System.Int64 value); - partial void OnRoomIdChanged(); - - #endregion - - #region Navigation Properties - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "RoomUser", "Room")] - public Room Room - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomUser", "Room").Value; - } - set - { - ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomUser", "Room").Value = value; - } - } - /// - /// No Metadata Documentation available. - /// - [BrowsableAttribute(false)] - [DataMemberAttribute()] - public EntityReference RoomReference - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.RoomUser", "Room"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference("ServerDataModel.RoomUser", "Room", value); - } - } - } - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "UserUserVariable", "UserVariable")] - public EntityCollection UserVariables - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection("ServerDataModel.UserUserVariable", "UserVariable"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection("ServerDataModel.UserUserVariable", "UserVariable", value); - } - } - } - - #endregion - } - - /// - /// No Metadata Documentation available. - /// - [EdmEntityTypeAttribute(NamespaceName="ServerDataModel", Name="UserVariable")] - [Serializable()] - [DataContractAttribute(IsReference=true)] - public partial class UserVariable : Variable - { - #region Factory Method - - /// - /// Create a new UserVariable object. - /// - /// Initial value of the Id property. - /// Initial value of the Name property. - /// Initial value of the Value property. - /// Initial value of the UserId property. - public static UserVariable CreateUserVariable(global::System.Int64 id, global::System.String name, global::System.Byte[] value, global::System.Int64 userId) - { - UserVariable userVariable = new UserVariable(); - userVariable.Id = id; - userVariable.Name = name; - userVariable.Value = value; - userVariable.UserId = userId; - return userVariable; - } - - #endregion - #region Primitive Properties - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 UserId - { - get - { - return _UserId; - } - set - { - OnUserIdChanging(value); - ReportPropertyChanging("UserId"); - _UserId = StructuralObject.SetValidValue(value); - ReportPropertyChanged("UserId"); - OnUserIdChanged(); - } - } - private global::System.Int64 _UserId; - partial void OnUserIdChanging(global::System.Int64 value); - partial void OnUserIdChanged(); - - #endregion - - #region Navigation Properties - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "UserUserVariable", "User")] - public User User - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.UserUserVariable", "User").Value; - } - set - { - ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.UserUserVariable", "User").Value = value; - } - } - /// - /// No Metadata Documentation available. - /// - [BrowsableAttribute(false)] - [DataMemberAttribute()] - public EntityReference UserReference - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference("ServerDataModel.UserUserVariable", "User"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference("ServerDataModel.UserUserVariable", "User", value); - } - } - } - - #endregion - } - - /// - /// No Metadata Documentation available. - /// - [EdmEntityTypeAttribute(NamespaceName="ServerDataModel", Name="Variable")] - [Serializable()] - [DataContractAttribute(IsReference=true)] - [KnownTypeAttribute(typeof(RoomVariable))] - [KnownTypeAttribute(typeof(UserVariable))] - public partial class Variable : EntityObject - { - #region Factory Method - - /// - /// Create a new Variable object. - /// - /// Initial value of the Id property. - /// Initial value of the Name property. - /// Initial value of the Value property. - public static Variable CreateVariable(global::System.Int64 id, global::System.String name, global::System.Byte[] value) - { - Variable variable = new Variable(); - variable.Id = id; - variable.Name = name; - variable.Value = value; - return variable; - } - - #endregion - #region Primitive Properties - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 Id - { - get - { - return _Id; - } - set - { - if (_Id != value) - { - OnIdChanging(value); - ReportPropertyChanging("Id"); - _Id = StructuralObject.SetValidValue(value); - ReportPropertyChanged("Id"); - OnIdChanged(); - } - } - } - private global::System.Int64 _Id; - partial void OnIdChanging(global::System.Int64 value); - partial void OnIdChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.String Name - { - get - { - return _Name; - } - set - { - OnNameChanging(value); - ReportPropertyChanging("Name"); - _Name = StructuralObject.SetValidValue(value, false); - ReportPropertyChanged("Name"); - OnNameChanged(); - } - } - private global::System.String _Name; - partial void OnNameChanging(global::System.String value); - partial void OnNameChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Byte[] Value - { - get - { - return StructuralObject.GetValidValue(_Value); - } - set - { - OnValueChanging(value); - ReportPropertyChanging("Value"); - _Value = StructuralObject.SetValidValue(value, false); - ReportPropertyChanged("Value"); - OnValueChanged(); - } - } - private global::System.Byte[] _Value; - partial void OnValueChanging(global::System.Byte[] value); - partial void OnValueChanged(); - - #endregion - - } - - /// - /// No Metadata Documentation available. - /// - [EdmEntityTypeAttribute(NamespaceName="ServerDataModel", Name="Zone")] - [Serializable()] - [DataContractAttribute(IsReference=true)] - public partial class Zone : EntityObject - { - #region Factory Method - - /// - /// Create a new Zone object. - /// - /// Initial value of the Id property. - /// Initial value of the Name property. - public static Zone CreateZone(global::System.Int64 id, global::System.String name) - { - Zone zone = new Zone(); - zone.Id = id; - zone.Name = name; - return zone; - } - - #endregion - #region Primitive Properties - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] - [DataMemberAttribute()] - public global::System.Int64 Id - { - get - { - return _Id; - } - set - { - if (_Id != value) - { - OnIdChanging(value); - ReportPropertyChanging("Id"); - _Id = StructuralObject.SetValidValue(value); - ReportPropertyChanged("Id"); - OnIdChanged(); - } - } - } - private global::System.Int64 _Id; - partial void OnIdChanging(global::System.Int64 value); - partial void OnIdChanged(); - - /// - /// No Metadata Documentation available. - /// - [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] - [DataMemberAttribute()] - public global::System.String Name - { - get - { - return _Name; - } - set - { - OnNameChanging(value); - ReportPropertyChanging("Name"); - _Name = StructuralObject.SetValidValue(value, false); - ReportPropertyChanged("Name"); - OnNameChanged(); - } - } - private global::System.String _Name; - partial void OnNameChanging(global::System.String value); - partial void OnNameChanged(); - - #endregion - - #region Navigation Properties - - /// - /// No Metadata Documentation available. - /// - [XmlIgnoreAttribute()] - [SoapIgnoreAttribute()] - [DataMemberAttribute()] - [EdmRelationshipNavigationPropertyAttribute("ServerDataModel", "ZoneRoom", "Room")] - public EntityCollection Rooms - { - get - { - return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection("ServerDataModel.ZoneRoom", "Room"); - } - set - { - if ((value != null)) - { - ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection("ServerDataModel.ZoneRoom", "Room", value); - } - } - } - - #endregion - } - - #endregion - -} diff --git a/SocketService.Core/Data/User.cs b/SocketService.Core/Data/User.cs deleted file mode 100644 index 5f0285b..0000000 --- a/SocketService.Core/Data/User.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SocketServer.Core.Data -{ - public partial class User - { - public User() - { - Id = AutoIdElement.GetNextID(); - } - - } -} diff --git a/SocketService.Core/Data/Zone.cs b/SocketService.Core/Data/Zone.cs deleted file mode 100644 index 2551d48..0000000 --- a/SocketService.Core/Data/Zone.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace SocketServer.Core.Data -{ - public partial class Zone - { - public Zone() - { - Id = AutoIdElement.GetNextID(); - } - } -} diff --git a/SocketService.Core/Messaging/BaseMessageHandler.cs b/SocketService.Core/Messaging/BaseMessageHandler.cs deleted file mode 100644 index 5336cda..0000000 --- a/SocketService.Core/Messaging/BaseMessageHandler.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using log4net; -using System.Reflection; - -namespace SocketServer.Core.Messaging -{ - [Serializable] - public abstract class BaseMessageHandler : ICommand - { - protected static ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public abstract void Execute(); - } -} diff --git a/SocketService.Core/Messaging/ICommand.cs b/SocketService.Core/Messaging/ICommand.cs deleted file mode 100644 index f785506..0000000 --- a/SocketService.Core/Messaging/ICommand.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SocketServer.Core.Messaging -{ - public interface ICommand - { - void Execute(); - } -} diff --git a/SocketService.Core/Messaging/MSMQQueueWatcher.cs b/SocketService.Core/Messaging/MSMQQueueWatcher.cs deleted file mode 100644 index 5607694..0000000 --- a/SocketService.Core/Messaging/MSMQQueueWatcher.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Messaging; -using log4net; -using System.Reflection; - -namespace SocketServer.Core.Messaging -{ - public class MSMQQueueWatcher : IDisposable - { - private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private readonly MessageQueue _receiveQueue; - - /// - /// Initializes a new instance of the class. - /// - /// Name of the queue. - public MSMQQueueWatcher(string queueName) - { - // open the queue - _receiveQueue = new MessageQueue(queueName) {Formatter = new BinaryMessageFormatter()}; - } - - /// - /// Closes the queue. - /// - public void CloseQueue() - { - _receiveQueue.Close(); - } - - /// - /// Recieves the message. - /// - /// - /// The milliseconds. - /// - public T RecieveMessage(int milliseconds) where T : class - { - var t = default(T); - try - { - var myMessage = _receiveQueue.Receive(TimeSpan.FromMilliseconds(milliseconds)); - if (myMessage != null) t = myMessage.Body as T; - } - catch (MessageQueueException e) - { - // if MessageQueue.Receive times out, we'll ignore the exception - // otherwise, do something useful with the error (log, display, etc.) - if (e.MessageQueueErrorCode != MessageQueueErrorCode.IOTimeout) - { - Log.ErrorFormat("Error: ({0}) {1}", e.ErrorCode, e.Message); - } - } - return t; - } - - /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// - public void Dispose() - { - CloseQueue(); - } - } -} diff --git a/SocketService.Core/Messaging/MSMQQueueWrapper.cs b/SocketService.Core/Messaging/MSMQQueueWrapper.cs deleted file mode 100644 index 7c4ed3c..0000000 --- a/SocketService.Core/Messaging/MSMQQueueWrapper.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Messaging; -using System.Configuration; -using log4net; -using System.Reflection; - -namespace SocketServer.Core.Messaging -{ - public class MSMQQueueWrapper - { - // private static readonly string QueuePath; - private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - static MSMQQueueWrapper() - { - // QueuePath = ConfigurationManager.AppSettings["ServerMessageQueue"]; - } - - /// - /// Queues the command. - /// - /// The c. - public static void QueueCommand(string queuePath, ICommand c) - { - try - { - // open the queue - var mq = new MessageQueue(queuePath) - {DefaultPropertiesToSend = {Recoverable = true}, Formatter = new BinaryMessageFormatter()}; - - // set the message to durable. - - // set the formatter to Binary, default is XML - - // send the command object - mq.Send(c, "Command Message"); - mq.Close(); - } - catch (Exception e) - { - Log.ErrorFormat("Error: {0}", e.Message); - } - } - - } -} diff --git a/SocketService.Core/Messaging/MessageServer.cs b/SocketService.Core/Messaging/MessageServer.cs deleted file mode 100644 index c7be728..0000000 --- a/SocketService.Core/Messaging/MessageServer.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Messaging; -using System.Threading; -using System.Configuration; -using System.Reflection; -using log4net; - -namespace SocketServer.Core.Messaging -{ - public class MessageServer : MSMQQueueWatcher - { - private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private readonly ManualResetEvent _stopEvent = new ManualResetEvent(false); - - private bool _running; - - private readonly string _queueName; - /// - /// Initializes a new instance of the class. - /// - public MessageServer(string queueName, string queuePath) - : base(queuePath) - { - _queueName = queueName; - - // create queue, if it doesn't exist - if (!MessageQueue.Exists(queuePath)) - MessageQueue.Create(queuePath); - } - - /// - /// Starts this instance. - /// - public void Start() - { - if (_running) return; - - _stopEvent.Reset(); - _running = true; - - var numProcessors = Environment.ProcessorCount; - const double numThreadsPerProcessor = 1.5; - var numThreads = (int)(numProcessors * numThreadsPerProcessor) + 1; - - for (int i = 0; i < numThreads; i++) - { - var serverThread = new Thread(Serve); - serverThread.Start(); - } - } - - /// - /// Stops this instance. - /// - public void Stop() - { - _stopEvent.Set(); - _running = false; - } - - /// - /// Pauses this instance. - /// - public void Pause() - { - // TODO: Implement Pause - } - - /// - /// Resumes this instance. - /// - public void Resume() - { - // TODO: Implement Resume - } - - protected void Serve() - { - while (!_stopEvent.WaitOne(50)) - { - var command = RecieveMessage(500); - if (command == null) continue; - - try - { - command.Execute(); - } - catch (Exception e) - { - Log.ErrorFormat("Error: {0}", e.Message); - } - } - } - } -} diff --git a/SocketService.Core/Properties/AssemblyInfo.cs b/SocketService.Core/Properties/AssemblyInfo.cs deleted file mode 100644 index 710769d..0000000 --- a/SocketService.Core/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SocketService.Framework")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("SocketService.Framework")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9c7d6078-99b8-4145-b9b7-8744625cb764")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SocketService.Core/ServiceHandlerLib/BaseHandler.cs b/SocketService.Core/ServiceHandlerLib/BaseHandler.cs deleted file mode 100644 index 0b08396..0000000 --- a/SocketService.Core/ServiceHandlerLib/BaseHandler.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace SocketServer.Core.ServiceHandlerLib -{ - [Serializable] - public abstract class BaseHandler : IServiceHandler where T : class - { - public bool HandleRequest(object request, object state) - { - return HandleRequest(request as T, (TState)state); - } - - public abstract bool HandleRequest(T request, TState state); - } -} diff --git a/SocketService.Core/ServiceHandlerLib/IServiceHandler.cs b/SocketService.Core/ServiceHandlerLib/IServiceHandler.cs deleted file mode 100644 index c232131..0000000 --- a/SocketService.Core/ServiceHandlerLib/IServiceHandler.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SocketServer.Core.ServiceHandlerLib -{ - public interface IServiceHandler - { - bool HandleRequest(object request, object state); - } -} diff --git a/SocketService.Core/ServiceHandlerLib/IServiceHandlerMetaData.cs b/SocketService.Core/ServiceHandlerLib/IServiceHandlerMetaData.cs deleted file mode 100644 index 977a358..0000000 --- a/SocketService.Core/ServiceHandlerLib/IServiceHandlerMetaData.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace SocketServer.Core.ServiceHandlerLib -{ - public interface IServiceHandlerMetaData - { - Type HandlerType - { - get; - } - } -} diff --git a/SocketService.Core/ServiceHandlerLib/IServiceHandlerRepository.cs b/SocketService.Core/ServiceHandlerLib/IServiceHandlerRepository.cs deleted file mode 100644 index f0f3bdc..0000000 --- a/SocketService.Core/ServiceHandlerLib/IServiceHandlerRepository.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketService.Framework.ServiceHandlerLib -{ - public interface IServiceHandlerRepository - { - /// - /// Gets the handler list by type. - /// - /// The type. - /// - List GetHandlerListByType(Type type); - - /// - /// Loads the handlers. - /// - /// The handler path. - void LoadHandlers(); - - } -} diff --git a/SocketService.Core/ServiceHandlerLib/ServiceHandlerRepository.cs b/SocketService.Core/ServiceHandlerLib/ServiceHandlerRepository.cs deleted file mode 100644 index f378f88..0000000 --- a/SocketService.Core/ServiceHandlerLib/ServiceHandlerRepository.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.ComponentModel.Composition; -using System.ComponentModel.Composition.Hosting; -using System.Reflection; -using System.IO; -using System.Configuration; -using SocketService.Framework.Configuration; -using SocketService.Framework.ServiceHandlerLib; - -namespace SocketService.Framework.ServiceHandlerLib -{ - public class ServiceHandlerRepository : IServiceHandlerRepository - { - [ImportMany] - protected IEnumerable> _handlerList; - - private static ServiceHandlerRepository _instance = null; - - /// - /// Initializes the class. - /// - static ServiceHandlerRepository() - { - Instance.LoadHandlers(); - } - - /// - /// Gets the instance. - /// - public static ServiceHandlerRepository Instance - { - get - { - if (_instance == null) - { - _instance = new ServiceHandlerRepository(); - } - - return _instance; - } - } - - protected ServiceHandlerRepository() - { - //string handlerPath - } - - /// - /// Gets the handler list by type. - /// - /// The type. - /// - public List GetHandlerListByType(Type type) - { - List serviceHandlers = new List(); - - serviceHandlers = _handlerList - .Where((h) => h.Metadata.HandlerType == type) - .Select((lz) => lz.Value) - .ToList(); - - return serviceHandlers; - } - - /// - /// Loads the handlers. - /// - /// The handler path. - public void LoadHandlers() - { - SocketServiceConfiguration config = null; - - try - { config = (SocketServiceConfiguration)ConfigurationManager.GetSection("SocketServerConfiguration"); } - catch (Exception ex) - { } - - var aggregateCatalog = new AggregateCatalog(); - - Assembly callingAssembly = Assembly.GetExecutingAssembly(); - - // an assembly catalog to load information about parts from this assembly - var assemblyCatalog = new AssemblyCatalog(callingAssembly); - var directoryCatalog = new DirectoryCatalog(Path.GetDirectoryName(callingAssembly.Location), "*.dll"); - - aggregateCatalog.Catalogs.Add(assemblyCatalog); - aggregateCatalog.Catalogs.Add(directoryCatalog); - - // create a container for our catalogs - var container = new CompositionContainer(aggregateCatalog); - - // finally, compose the parts - container.ComposeParts(this); - } - } -} diff --git a/SocketService.Core/ServiceHandlerLib/ServiceHandlerTypeAttribute.cs b/SocketService.Core/ServiceHandlerLib/ServiceHandlerTypeAttribute.cs deleted file mode 100644 index 0b05080..0000000 --- a/SocketService.Core/ServiceHandlerLib/ServiceHandlerTypeAttribute.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.ComponentModel.Composition; - -namespace SocketServer.Core.ServiceHandlerLib -{ - [MetadataAttribute] - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false)] - public class ServiceHandlerTypeAttribute : ExportAttribute, IServiceHandlerMetaData - { - /// - /// Initializes a new instance of the class. - /// - public ServiceHandlerTypeAttribute() - : this(null) - { - } - - /// - /// Initializes a new instance of the class. - /// - /// Type of the handler. - public ServiceHandlerTypeAttribute(Type handlerType) - : base(typeof(IServiceHandler)) - { - HandlerType = handlerType; - } - - #region IHandlerType Members - - public Type HandlerType - { - get; - set; - } - - #endregion - } -} diff --git a/SocketService.Core/SocketServer.Core.csproj b/SocketService.Core/SocketServer.Core.csproj deleted file mode 100644 index e8c5e3d..0000000 --- a/SocketService.Core/SocketServer.Core.csproj +++ /dev/null @@ -1,130 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {A0CAE0A0-EFA9-452B-98FB-5FE3172FCD1B} - Library - Properties - SocketServer.Core - SocketServer.Core - v4.0 - 512 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\References\log4net.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - ServerDataModel.edmx - - - - - - - False - Microsoft .NET Framework 4 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - SQL Server Compact 3.5 SP2 - true - - - False - Windows Installer 3.1 - true - - - - - EntityModelCodeGenerator - ServerDataModel.Designer.cs - - - - - - - - - \ No newline at end of file diff --git a/SocketService.Core/Util/SingletonBase.cs b/SocketService.Core/Util/SingletonBase.cs deleted file mode 100644 index 10a37e6..0000000 --- a/SocketService.Core/Util/SingletonBase.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace SocketServer.Core.Util -{ - public class SingletonBase where T : class, new() - { - private static T _instance; - - /// - /// Gets the instance. - /// - public static T Instance - { - get { return _instance ?? (_instance = new T()); } - } - } -} diff --git a/SocketService.Framework/SocketServiceBase.cs b/SocketService.Framework/SocketServiceBase.cs deleted file mode 100644 index 7736be4..0000000 --- a/SocketService.Framework/SocketServiceBase.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Configuration.Install; -using System.Linq; -using System.Reflection; -using System.ServiceProcess; -using System.Text; -using System.Threading; -using log4net; - -namespace SocketService.Framework -{ - public class SocketServiceBase : ServiceBase - { - protected static ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - public SocketServiceBase() - { - CanStop = true; - CanPauseAndContinue = false; - AutoLog = true; - RunAsService = true; - } - - public bool RunAsService { get; set; } - - /// - /// Override in subclasses to start your application code. The code will automatically - /// be started as either a service or an application depending on the RunAsService property. - /// - public virtual void StartService() { } - - /// - /// APSServiceBase default implementation for OnStart. This will only be called if RunAsService is set to true. - /// Implementers should not override this method. Instead, they should put all service start code in StartService. - /// The APSServiceBase will handle starting and stopping appropriately depending on whether RunAsService is set or not. - /// - /// - protected override void OnStart(string[] args) - { - var thread = new Thread(StartService) { Name = "ServiceThread", IsBackground = false}; - thread.Start(); - } - - /// - /// Override in subclasses to stop your application code. This will only be called if RunAsService is true. - /// - public virtual void StopService() { } - - /// - /// APSServiceBase default implementation for OnStop. This will only be called if RunAsService is set to true. - /// Implementers should not override this method. Instead, they should put all service shutdown code in StopService. - /// The APSServiceBase will handle starting and stopping appropriately depending on whether RunAsService is set or not. - /// - protected override void OnStop() - { - StopService(); - } - - public void Run() - { - // Set working directory to application directory. - // Otherwise Windows/System32 is used. - Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; - - // We must start the server appropriately depending on whether we are a service or not. - if (RunAsService) - { - Run(this); - } - else - { - StartService(); - } - } - } -} diff --git a/SocketService/Command/BaseCommandHandler.cs b/SocketService/Command/BaseCommandHandler.cs deleted file mode 100644 index 113b003..0000000 --- a/SocketService/Command/BaseCommandHandler.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using log4net; -using System.Reflection; - -namespace SocketServer.Command -{ - [Serializable] - public abstract class BaseCommandHandler : ICommand - { - protected static ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public abstract void Execute(); - } -} diff --git a/SocketService/Command/BroadcastMessageCommand.cs b/SocketService/Command/BroadcastMessageCommand.cs deleted file mode 100644 index fe28cb2..0000000 --- a/SocketService/Command/BroadcastMessageCommand.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using System.Linq; -using System.Reflection; -using log4net; -using SocketServer.Net; -using SocketServer.Shared; -using SocketServer.Shared.Serialization; -using SocketServer.Shared.Header; -using SocketServer.Net.Client; - -namespace SocketServer.Command -{ - [Serializable] - class BroadcastMessageCommand : BaseCommandHandler - { - private readonly static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private readonly Guid[] _clientList; - private readonly string _response; - private readonly CompressionTypes _compressionType; - private readonly EncryptionTypes _encryptionType; - private readonly ResponseTypes _responseType; - - public BroadcastMessageCommand(Guid[] clientList, string response, ResponseTypes responseType, MessageHeader header) - { - _clientList = clientList; - _response = response; - _responseType = responseType; - _compressionType = header.CompressionType; - _encryptionType = header.EncryptionHeader.EncryptionType; - } - - public override void Execute() - { - foreach (var connection in ConnectionRepository.Instance.Query(c => _clientList.Contains(c.ClientId))) - { - try - { - ResponseHeader responseHeader = ResponseBuilder.BuildResponseHeader(_encryptionType, _compressionType, _responseType); - - //connection. .ClientSocket.SendData( - // XmlSerializationHelper - // .Serialize(responseHeader) - // .SerializeUTF()); - - - //connection.ClientSocket.SendData( - // ResponseBuilder.ProcessResponse( - // connection.ServerAuthority, - // connection - // .RequestHeader - // .MessageHeader - // .EncryptionHeader - // .PublicKey, - // responseHeader, - // _response).SerializeUTF()); - } - catch (Exception ex) - { - Log.Error(ex); - } - } - } - } -} diff --git a/SocketService/Command/ClientConnectCommand.cs b/SocketService/Command/ClientConnectCommand.cs deleted file mode 100644 index 1276574..0000000 --- a/SocketService/Command/ClientConnectCommand.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Net.Sockets; - -namespace SocketService.Command -{ - [Serializable()] - public class ClientConnectCommand : BaseCommand - { - private readonly Guid _clientId; - public ClientConnectCommand(Guid clientId) - { - _clientId = clientId; - } - - public override void Execute() - { - ZipSocket rawSocket = SocketRepository.Instance.FindByClientId(_clientId); - - if (rawSocket != null) - { - Connection connection = ConnectionRepository.Instance.FindConnectionByClientId(_clientId); - if (connection != null) - { - connection.ConnectionState = ConnectionState.NegotiateKeyPair; - } - } - } - } -} diff --git a/SocketService/Command/ClientConnectingCommand.cs b/SocketService/Command/ClientConnectingCommand.cs deleted file mode 100644 index e4903f1..0000000 --- a/SocketService/Command/ClientConnectingCommand.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Net.Sockets; -using SocketServer.Messaging; -using SocketServer.Net; -using SocketServer.Net.Client; - -namespace SocketServer.Command -{ - [Serializable] - public class ClientConnectingCommand : BaseMessageHandler - { - private Guid clientId; - - public ClientConnectingCommand(Guid clientId) - { - this.clientId = clientId; - } - - public override void Execute() - { - var connection = ConnectionRepository.Instance.NewConnection(); - connection.ClientId = clientId; - } - } -} diff --git a/SocketService/Command/CommandServer.cs b/SocketService/Command/CommandServer.cs deleted file mode 100644 index e5c437d..0000000 --- a/SocketService/Command/CommandServer.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Messaging; -using System.Threading; -using System.Configuration; -using System.Reflection; -using log4net; - -namespace SocketServer.Command -{ - public class CommandServer : MSMQQueueWatcher - { - private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private readonly ManualResetEvent _stopEvent = new ManualResetEvent(false); - - private bool _running; - - private readonly string _queueName; - /// - /// Initializes a new instance of the class. - /// - public CommandServer(string queueName, string queuePath) - : base(queuePath) - { - _queueName = queueName; - - // create queue, if it doesn't exist - if (!MessageQueue.Exists(queuePath)) - MessageQueue.Create(queuePath); - } - - /// - /// Starts this instance. - /// - public void Start() - { - if (_running) return; - - _stopEvent.Reset(); - _running = true; - - var numProcessors = Environment.ProcessorCount; - const double numThreadsPerProcessor = 1.5; - var numThreads = (int)(numProcessors * numThreadsPerProcessor) + 1; - - for (int i = 0; i < numThreads; i++) - { - var serverThread = new Thread(Serve); - serverThread.Start(); - } - } - - /// - /// Stops this instance. - /// - public void Stop() - { - _stopEvent.Set(); - _running = false; - } - - /// - /// Pauses this instance. - /// - public void Pause() - { - // TODO: Implement Pause - } - - /// - /// Resumes this instance. - /// - public void Resume() - { - // TODO: Implement Resume - } - - protected void Serve() - { - while (!_stopEvent.WaitOne(50)) - { - var command = RecieveMessage(500); - if (command == null) continue; - - try - { - command.Execute(); - } - catch (Exception e) - { - Log.Error(e); - } - } - } - } -} diff --git a/SocketService/Command/CreateRoomCommand.cs b/SocketService/Command/CreateRoomCommand.cs deleted file mode 100644 index 9f01abd..0000000 --- a/SocketService/Command/CreateRoomCommand.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Linq; -using SocketServer.Actions; -using SocketServer.Repository; -using SocketServer.Shared.Serialization; -using SocketServer.Shared; -using SocketServer.Net.Client; -using SocketServer.Shared.Event; - -namespace SocketServer.Command -{ - [Serializable] - class CreateRoomCommand : BaseCommandHandler - { - private readonly Guid _clientId; - private readonly string _roomName; - private readonly string _zoneName; - public CreateRoomCommand(Guid clientId, string zoneName, string roomName) - { - _clientId = clientId; - _roomName = roomName; - _zoneName = zoneName; - } - - public override void Execute() - { - var newZone = ZoneActionEngine.Instance.CreateZone(_zoneName); - var connection = ConnectionRepository.Instance.Query(c => c.ClientId == _clientId).FirstOrDefault(); - - if( newZone != null && connection != null) - { - var newRoom = RoomActionEngine.Instance.CreateRoom(_roomName, newZone); - if (newRoom != null && UserActionEngine.Instance.ClientChangeRoom(_clientId, _roomName)) - { - JoinRoomEvent evt = new JoinRoomEvent() - { - RoomName = newRoom.Name, - RoomId = newRoom.Id, - Capacity = newRoom.Capacity, - Hidden = newRoom.IsPrivate, - Protected = newRoom.IsPersistable, - RoomDescription = string.Empty, - Users = newRoom.Users.Select( u => u.Name ).ToList()}; - - MSMQQueueWrapper.QueueCommand( - new SendServerResponseCommand( - _clientId, - XmlSerializationHelper.Serialize(evt), - ResponseTypes.JoinRoomEvent, - connection.RequestHeader.MessageHeader)); - } - } - - //Zone newZone = ZoneActionEngine.Instance.CreateZone(_zoneName); - - //if (user != null && user.Room.Name != _roomName) - //{ - // Room oldRoom = user.Room; - - // if (oldRoom.Id != newRoom.Id) - // { - // newRoom.AddUser(new UserListEntry() { UserName = user.UserName }); - // oldRoom.RemoveUser(new UserListEntry() { UserName = user.UserName }); - - // UserActionEngine.Instance.ClientChangeRoom(_clientId, _roomName); - - // // tell client that they are leaving a room - // MSMQQueueWrapper.QueueCommand( - // new SendObjectCommand(_clientId, - // new LeaveRoomEvent() - // { - // RoomId = oldRoom.Id, - // UserName = user.UserName - // } - // ) - // ); - - // // now tell client they are arriving at a new room - // MSMQQueueWrapper.QueueCommand( - // new SendObjectCommand(_clientId, - // new JoinRoomEvent() - // { - // RoomName = newRoom.Name, - // RoomId = newRoom.Id, - // Protected = false, - // Hidden = false, - // Capacity = -1, - // RoomDescription = "", - // RoomVariables = newRoom.Variables.ToArray(), - // Users = newRoom.Users.ToArray() - // } - // ) - // ); - - // // tell clients to add user to room - // MSMQQueueWrapper.QueueCommand( - // new BroadcastObjectCommand( - // UserRepository.Instance.FindClientKeysByRoomFiltered(_roomName, _clientId).ToArray(), - // new RoomUserUpdateEvent() - // { - // Action = RoomUserUpdateAction.AddUser, - // RoomId = newRoom.Id, - // UserName = user.UserName - // } - // ) - // ); - - // // tell clients to remove user from room - // MSMQQueueWrapper.QueueCommand( - // new BroadcastObjectCommand( - // UserRepository.Instance.FindClientKeysByRoomFiltered(oldRoom.Name, _clientId).ToArray(), - // new RoomUserUpdateEvent() - // { - // Action = RoomUserUpdateAction.DeleteUser, - // RoomId = oldRoom.Id, - // UserName = user.UserName - // } - // ) - // ); - // } - //} - } - } -} diff --git a/SocketService/Command/CreateRoomVariableCommand.cs b/SocketService/Command/CreateRoomVariableCommand.cs deleted file mode 100644 index 800f4b7..0000000 --- a/SocketService/Command/CreateRoomVariableCommand.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Linq; -using SocketServer.Actions; -using SocketServer.Repository; -using SocketServer.Shared; - -namespace SocketServer.Command -{ - [Serializable] - internal class CreateRoomVariableCommand : BaseCommandHandler - { - private readonly Guid _clientId; - private readonly string _name; - private readonly long _roomId; - private readonly object _so; - private readonly int _zoneId; - - public CreateRoomVariableCommand(Guid clientId, int zoneId, long roomId, string name, object so) - { - _clientId = clientId; - _zoneId = zoneId; - _roomId = roomId; - _name = name; - _so = so; - } - - public override void Execute() - { - //var room = RoomRepository.Instance.Find(_roomId); - //if (room == null) return; - - ////RoomActionEngine.Instance.CreateRoomVariable(room, _name, ObjectSerialize.Serialize(_so)); - - //MSMQQueueWrapper.QueueCommand( - // new BroadcastMessageCommand( - // room.Users.Select( u => u.ClientKey ).ToArray(), - // new RoomVariableUpdateEvent() { Action = RoomVariableUpdateAction.Add, Name = _name, RoomId = _roomId, Value = _so, ZoneId = _zoneId } - // ) - // ); - - } - } -} \ No newline at end of file diff --git a/SocketService/Command/DeleteRoomVariableCommand.cs b/SocketService/Command/DeleteRoomVariableCommand.cs deleted file mode 100644 index 42fec17..0000000 --- a/SocketService/Command/DeleteRoomVariableCommand.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; - -namespace SocketServer.Command -{ - [Serializable] - public class DeleteRoomVariableCommand : BaseCommandHandler - { - private readonly Guid _clientId; - private readonly int _zoneId; - private readonly int _roomId; - private readonly string _name; - public DeleteRoomVariableCommand(Guid clientId, int zoneId, int roomId, string name) - { - _zoneId = zoneId; - _clientId = clientId; - _roomId = roomId; - _name = name; - } - - public override void Execute() - { - - //Room room = RoomActionEngine.Instance.GetRoomByName(_roomName); - //RoomActionEngine.Instance.DeleteRoomVariable(room.Id, _name); - - //MSMQQueueWrapper.QueueCommand( - // new BroadcastObjectCommand( - // UserRepository.Instance.FindClientKeysByRoom(_roomName).ToArray(), - // new RoomVariableUpdateEvent() - // { - // RoomId = room.Id, - // Name = _name, - // Action = RoomVariableUpdateAction.Delete - // } - // ) - //); - - //MSMQQueueWrapper.QueueCommand( - // new SendObjectCommand( - // _clientId, - // new DeleteRoomVariableResponse() - // { - // Room = _roomName, - // Name = _name, - // } - // ) - //); - - } - } -} diff --git a/SocketService/Command/GetCentralAuthorityCommand.cs b/SocketService/Command/GetCentralAuthorityCommand.cs deleted file mode 100644 index 9132a3a..0000000 --- a/SocketService/Command/GetCentralAuthorityCommand.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Linq; -using SocketServer.Core.Messaging; -using SocketServer.Crypto; -using SocketServer.Net.Client; - -namespace SocketServer.Command -{ - [Serializable] - public class GetCentralAuthorityCommand : BaseMessageHandler - { - private readonly Guid _clientId; - public GetCentralAuthorityCommand(Guid clientId) - { - _clientId = clientId; - } - - public override void Execute() - { - var ca = new CentralAuthority(CAKeyProtocol.DH256); - - ClientConnection connection = - ConnectionRepository.Instance.Query(c => c.ClientId == _clientId).FirstOrDefault(); - if (connection == null) return; - - connection.SecureKeyProvider = ca.GetProvider(); - MSMQQueueWrapper.QueueCommand(new SendObjectCommand(_clientId, ca)); - } - } -} diff --git a/SocketService/Command/GetCentralAuthorityCommand.cs.orig b/SocketService/Command/GetCentralAuthorityCommand.cs.orig deleted file mode 100644 index b3225e3..0000000 --- a/SocketService/Command/GetCentralAuthorityCommand.cs.orig +++ /dev/null @@ -1,35 +0,0 @@ -using System; -<<<<<<< Updated upstream -using SocketService.Core.Crypto; -using SocketService.Core.Messaging; -======= -using System.Linq; -using SocketService.Framework.Messaging; -using SocketService.Crypto; ->>>>>>> Stashed changes -using SocketService.Net.Client; - -namespace SocketService.Command -{ - [Serializable] - public class GetCentralAuthorityCommand : BaseMessageHandler - { - private readonly Guid _clientId; - public GetCentralAuthorityCommand(Guid clientId) - { - _clientId = clientId; - } - - public override void Execute() - { - var ca = new CentralAuthority(CAKeyProtocol.DH64); - - ClientConnection connection = - ConnectionRepository.Instance.Query(c => c.ClientId == _clientId).FirstOrDefault(); - if (connection == null) return; - - connection.SecureKeyProvider = ca.GetProvider(); - MSMQQueueWrapper.QueueCommand(new SendObjectCommand(_clientId, ca)); - } - } -} diff --git a/SocketService/Command/GetKeyParametersCommand.cs b/SocketService/Command/GetKeyParametersCommand.cs deleted file mode 100644 index a85ab96..0000000 --- a/SocketService/Command/GetKeyParametersCommand.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using SocketServer.Net.Client; -using Org.BouncyCastle.Crypto.Generators; -using Org.BouncyCastle.Security; -using Org.BouncyCastle.Crypto.Parameters; -using SocketServer.Crypto; -using SocketServer.Shared.Response; -using SocketServer.Shared.Network; - -namespace SocketServer.Command -{ - [Serializable] - public class GetKeyParametersCommand : BaseCommandHandler - { - private readonly Guid _clientId; - public GetKeyParametersCommand(Guid clientId) - { - _clientId = clientId; - } - - public override void Execute() - { - ClientConnection connection = ConnectionRepository.Instance.Query(c => c.ClientId == _clientId).FirstOrDefault(); - if (connection != null) - { - //connection.Provider = new DHProvider(DHParameterHelper.GenerateParameters()); - - //connection.Provider.Parameters = DHParameterHelper.GenerateParameters(); - - //MSMQQueueWrapper.QueueCommand( - // new SendMessageCommand(_clientId, - // new GetKeyParametersResponse { G = connection.Provider.Parameters.G.ToByteArray(), P = connection.Provider.Parameters.P.ToByteArray() }) - // ); - - } - - } - } -} diff --git a/SocketService/Command/GetRoomVariableCommand.cs b/SocketService/Command/GetRoomVariableCommand.cs deleted file mode 100644 index 91832f5..0000000 --- a/SocketService/Command/GetRoomVariableCommand.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Linq; -using SocketServer.Data; -using SocketServer.Repository; -using SocketServer.Shared; -using SocketServer.Shared.Response; -using SocketServer.Shared.Serialization; - -namespace SocketServer.Command -{ - [Serializable] - public class GetRoomVariableCommand : BaseCommandHandler - { - private readonly int _zoneId; - private readonly int _roomId; - private readonly string _name; - private readonly Guid _clientId; - - public GetRoomVariableCommand(Guid clientId, int zoneId, int roomId, string name) - { - _clientId = clientId; - _zoneId = zoneId; - _roomId = roomId; - _name = name; - } - - public override void Execute() - { - Room room = RoomRepository.Instance.Find(_roomId); - if (room != null) - { - var var = room.RoomVariables.FirstOrDefault( - target => target.Id == _roomId); - - object so = null; - if( var != null) - so = var.Value; - - //MSMQQueueWrapper.QueueCommand( - // new SendMessageCommand(_clientId, - // XmlSerializationHelper.Serialize( new GetRoomVariableResponse { ZoneId = _zoneId, RoomId = room.Id, Name = _name, Value = so } )) - //); - } - } - } -} diff --git a/SocketService/Command/HandleClientRequestCommand.cs b/SocketService/Command/HandleClientRequestCommand.cs deleted file mode 100644 index 16cebf0..0000000 --- a/SocketService/Command/HandleClientRequestCommand.cs +++ /dev/null @@ -1,95 +0,0 @@ -using System; -using System.Linq; -using System.Collections.Generic; -using SocketServer.Shared.Header; -using SocketServer.Shared.Reflection; -using SocketServer.Shared; -using SocketServer.Shared.Serialization; -using System.Reflection; -using log4net; -using SocketServer.Shared.Request; -using SocketServer.Repository; -using SocketServer.Net.Client; -using SocketServer.Crypto; -using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Crypto.Parameters; -using Org.BouncyCastle.Math; -using Org.BouncyCastle.Security; -using SocketServer.Shared.Network; - -namespace SocketServer.Command -{ - [Serializable] - public class HandleClientRequestCommand : BaseCommandHandler - { - private readonly Guid _clientId; - private readonly string _request; - private readonly string _requestType; - private readonly string _handlerName; - - private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public HandleClientRequestCommand(Guid id, string handlerName, string requestType, string request) - { - _clientId = id; - _handlerName = handlerName; - _requestType = requestType; - _request = request; - } - - public override void Execute() - { - ClientConnection client = ConnectionRepository.Instance.Query( c => c.ClientId == _clientId ).FirstOrDefault(); - - if (client != null) - { - string requestString = ProcessRawRequest(client, _request); - - object requestObject - = DeSerializeRequest( - _requestType, - ProcessRawRequest(client, _request)); - - if (requestObject != null) - { - ServiceHandlerRepository.Instance.InvokeHandler(_handlerName, requestObject, _clientId); - } - } - } - - private object DeSerializeRequest(string requestTypeString, string requestString) - { - Type requestType = ReflectionHelper.FindType(requestTypeString); - if (requestType != null) - { - return XmlSerializationHelper.DeSerialize(requestString, requestType); - } - return null; - } - - private string ProcessRawRequest(ClientConnection client, string requestString) - { - if (client.RequestHeader.MessageHeader.CompressionType != CompressionTypes.None) - { - // decompress - } - - if (client.RequestHeader.MessageHeader.EncryptionHeader.EncryptionType != EncryptionTypes.None) - { - // decrypt - byte [] publicKeyEncoded = client.RequestHeader.MessageHeader.EncryptionHeader.PublicKey; - - DHPublicKeyParameters publicKey = new DHPublicKeyParameters( - ((DHPublicKeyParameters)PublicKeyFactory.CreateKey(publicKeyEncoded)).Y, client.ServerAuthority.Parameters); - - BigInteger agreementValue = client.ServerAuthority.GenerateAgreementValue(publicKey); - - RijndaelCrypto crypto = new RijndaelCrypto(); - return crypto.Decrypt(requestString, agreementValue.ToString(16)); - } - - return requestString; - } - - } -} diff --git a/SocketService/Command/ICommand.cs b/SocketService/Command/ICommand.cs deleted file mode 100644 index 1596286..0000000 --- a/SocketService/Command/ICommand.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SocketServer.Command -{ - public interface ICommand - { - void Execute(); - } -} diff --git a/SocketService/Command/ListUsersInRoomCommand.cs b/SocketService/Command/ListUsersInRoomCommand.cs deleted file mode 100644 index 268f134..0000000 --- a/SocketService/Command/ListUsersInRoomCommand.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using SocketService.Framework.Messaging; -using SocketService.Framework.Client.Data.Domain; -using SocketService.Framework.Client.Data; -using SocketService.Framework.SharedObjects; -using SocketService.Framework.Client.Response; - -namespace SocketService.Command -{ - [Serializable] - public class ListUsersInRoomCommand : BaseMessageHandler - { - private readonly string _room; - private readonly Guid _clientId; - public ListUsersInRoomCommand(string room, Guid clientId) - { - _room = room; - _clientId = clientId; - } - - - public override void Execute() - { - User user = UserRepository.Instance.FindUserByClientKey(_clientId); - if (user != null) - { - List userList = new List(); - if (string.IsNullOrEmpty(_room)) - { - userList = UserRepository.Instance.FindUsersByRoom(user.Room); - } - else - { - userList = UserRepository.Instance.FindUsersByRoom(_room); - } - - var query = from u in userList - select new ServerUser() { Name = u.UserName }; - - MSMQQueueWrapper.QueueCommand( - new SendObjectCommand(_clientId, - new ListUsersInRoomResponse() { Users = query.ToArray() }) - ); - } - } - } -} diff --git a/SocketService/Command/LoginUserCommand.cs b/SocketService/Command/LoginUserCommand.cs deleted file mode 100644 index cf1adbe..0000000 --- a/SocketService/Command/LoginUserCommand.cs +++ /dev/null @@ -1,170 +0,0 @@ -using System; -using System.Linq; -using SocketServer.Actions; -using SocketServer.Data; -using SocketServer.Repository; -using SocketServer.Shared; -using SocketServer.Shared.Response; -using SocketServer.Shared.Serialization; -using SocketServer.Net.Client; -using SocketServer.Shared.Event; - -namespace SocketServer.Command -{ - [Serializable] - public class LoginUserCommand : BaseCommandHandler - { - private readonly Guid _clientId; - private readonly string _username; - - public LoginUserCommand(Guid clientId, string username) - { - _clientId = clientId; - _username = username; - } - - public override void Execute() - { - Logger.InfoFormat("Client {0} logging in.", _clientId); - - // get/create default zone - var defaultZone = ZoneActionEngine.Instance.CreateZone(ZoneActionEngine.DefaultZone); - - // get/create default room - var defaultRoom = RoomActionEngine.Instance.CreateRoom(RoomActionEngine.DefaultRoom, defaultZone); - - var connection = ConnectionRepository.Instance.Query( c => c.ClientId == _clientId ).FirstOrDefault(); - - if (connection != null) - { - // authenticate - bool success = UserActionEngine.Instance.LoginUser(_clientId, _username, defaultRoom); - LoginResponse response = new LoginResponse() { Success = success, UserName = _username }; - MSMQQueueWrapper.QueueCommand( - new SendServerResponseCommand( - _clientId, - XmlSerializationHelper.Serialize(response), - ResponseTypes.LoginResponse, - connection.RequestHeader.MessageHeader)); - - if (success) - { - MSMQQueueWrapper - .QueueCommand - ( - new CreateRoomCommand( - _clientId, - ZoneActionEngine.DefaultZone, - RoomActionEngine.DefaultRoom) - ); - - // success = UserActionEngine.Instance.ClientChangeRoom(_clientId, defaultRoom.Name); - - - - //if (success) - //{ - // var user = UserRepository.Instance.Query(u => u.ClientKey == _clientId).FirstOrDefault(); - - // // send join room event - // JoinRoomEvent evt = new JoinRoomEvent() - // { - // RoomName = defaultRoom.Name, - // RoomId = defaultRoom.Id, - // Capacity = defaultRoom.Capacity, - // Hidden = defaultRoom.IsPrivate, - // Protected = defaultRoom.IsPersistable, - // RoomDescription = string.Empty, - // Users = defaultRoom.Users.Select(u => u.Name).ToList() - // }; - - // MSMQQueueWrapper.QueueCommand( - // new SendServerResponseCommand( - // _clientId, - // XmlSerializationHelper.Serialize(evt), - // ResponseTypes.JoinRoomEvent, - // connection.RequestHeader.MessageHeader)); - - // RoomUserUpdateEvent roomUpdateEvent = new RoomUserUpdateEvent() - // { - // RoomName = defaultRoom.Name, - // RoomId = defaultRoom.Id, - // Action = RoomUserUpdateAction.AddUser, - // UserName = user.Name, - // ZoneId = defaultZone.Id - // }; - - // MSMQQueueWrapper.QueueCommand( - // new BroadcastMessageCommand( - // ConnectionRepository - // .Instance - // .Query(c => c.ClientId != _clientId) - // .Select(c1 => c1.ClientId).ToArray(), - // XmlSerializationHelper.Serialize(roomUpdateEvent), - // ResponseTypes.RoomUserUpdateEvent, - // connection.RequestHeader.MessageHeader)); - - } - } - - - //User user = UserRepository.Instance.Query(u => u.ClientKey.Equals(_clientId)).FirstOrDefault(); - //if (user != null) - //{ - - - //UserActionEngine.Instance.ClientChangeRoom(_clientId, RoomActionEngine.DefaultRoom); - - // tell clients about new user - //if (room != null) - // MSMQQueueWrapper.QueueCommand( - // new BroadcastMessageCommand( - // room.Users.Where(u => - // { - // if (u == null) throw new ArgumentNullException("u"); - // return u.ClientKey != _clientId; - // }). - // Select(u => u != null ? u.ClientKey : new Guid()). - // ToArray(), - // new RoomUserUpdateEvent - // { - // Action = RoomUserUpdateAction.AddUser, - // RoomId = room.Id, - // RoomName = room.Name, - // UserName = user.Name - // } - // ) - // ); - - - // send login response - //MSMQQueueWrapper.QueueCommand( - // new SendMessageCommand(_clientId, - // XmlSerializationHelper.Serialize(new LoginResponse {UserName = _username, Success = true})) - // ); - - // finally send a join room event to user - //if (room != null) - // MSMQQueueWrapper.QueueCommand( - // new SendObjectCommand(_clientId, - // new JoinRoomEvent - // { - // RoomName = room.Name, - // RoomId = room.Id, - // Protected = false, - // Hidden = false, - // Capacity = -1, - // RoomDescription = "", - // RoomVariables = room.RoomVariables.Select( - // rv => - // ObjectSerialize.Deserialize(rv.Value)). - // ToArray(), - // Users = room.Users.Select( - // u => u.Name - // ).ToArray() - // } - // ) - // ); - } - } -} diff --git a/SocketService/Command/LogoutUserCommand.cs b/SocketService/Command/LogoutUserCommand.cs deleted file mode 100644 index 16215ec..0000000 --- a/SocketService/Command/LogoutUserCommand.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Linq; -using SocketServer.Actions; -using SocketServer.Net; -using SocketServer.Net.Client; -using SocketServer.Repository; - -namespace SocketServer.Command -{ - [Serializable] - internal class LogoutUserCommand : BaseCommandHandler - { - private readonly Guid _clientId; - - public LogoutUserCommand(Guid clientId) - { - _clientId = clientId; - } - - public override void Execute() - { - Logger.InfoFormat("Client {0} logging out.", _clientId); - - var connection = ConnectionRepository.Instance.Query( c => c.ClientId == _clientId).FirstOrDefault(); - if (connection != null) - ConnectionRepository.Instance.RemoveConnection(connection); - - var clientSocket = SocketRepository.Instance.FindByClientId(_clientId); - if (clientSocket != null) - { - try - { - clientSocket.Close(); - } - catch (Exception ex) - { - Logger.Error(ex.ToString()); - } - } - - var user = UserRepository.Instance.Query(u => u.ClientKey == _clientId).FirstOrDefault(); - if (user != null && user.Room != null) - { - //var userList = user.Room.Users.Select(u => u.ClientKey); - //MSMQQueueWrapper.QueueCommand( - // new BroadcastMessageCommand(userList.ToArray(), - // new PublicMessageEvent - // { - // RoomId = (int) user.RoomId, - // UserName = string.Empty, - // Message = string.Format("{0} has logged out.", user.Name), - // ZoneId = (int) user.Room.ZoneId - // }) - // ); - } - - UserActionEngine.Instance.LogoutUser(_clientId); - } - } -} \ No newline at end of file diff --git a/SocketService/Command/LogoutUserCommand.cs.orig b/SocketService/Command/LogoutUserCommand.cs.orig deleted file mode 100644 index 49b463b..0000000 --- a/SocketService/Command/LogoutUserCommand.cs.orig +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using SocketService.Actions; -<<<<<<< Updated upstream -using SocketService.Core.Messaging; -======= -using SocketService.Framework.Client.Event; -using SocketService.Framework.Client.Sockets; -using SocketService.Framework.Data; -using SocketService.Framework.Messaging; -using SocketService.Net; ->>>>>>> Stashed changes -using SocketService.Net.Client; -using SocketService.Repository; - -namespace SocketService.Command -{ - [Serializable] - internal class LogoutUserCommand : BaseMessageHandler - { - private readonly Guid _clientId; - - public LogoutUserCommand(Guid clientId) - { - _clientId = clientId; - } - - public override void Execute() - { - Logger.InfoFormat("Client {0} logging out.", _clientId); - - var connection = ConnectionRepository.Instance.Query( c => c.ClientId == _clientId).FirstOrDefault(); - if (connection != null) - ConnectionRepository.Instance.RemoveConnection(connection); - - var clientSocket = SocketRepository.Instance.FindByClientId(_clientId); - if (clientSocket != null) - { - try - { - clientSocket.Close(); - } - catch (Exception ex) - { - Logger.Error(ex.ToString()); - } - } - - var user = UserRepository.Instance.Query(u => u.ClientKey == _clientId).FirstOrDefault(); - if (user != null && user.Room != null) - { - var userList = user.Room.Users.Select(u => u.ClientKey); - MSMQQueueWrapper.QueueCommand( - new BroadcastObjectCommand(userList.ToArray(), - new PublicMessageEvent - { - RoomId = (int) user.RoomId, - UserName = string.Empty, - Message = string.Format("{0} has logged out.", user.Name), - ZoneId = (int) user.Room.ZoneId - }) - ); - } - - UserActionEngine.Instance.LogoutUser(_clientId); - } - } -} \ No newline at end of file diff --git a/SocketService/Command/MSMQQueueWatcher.cs b/SocketService/Command/MSMQQueueWatcher.cs deleted file mode 100644 index 434f841..0000000 --- a/SocketService/Command/MSMQQueueWatcher.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Messaging; -using log4net; -using System.Reflection; - -namespace SocketServer.Command -{ - public class MSMQQueueWatcher : IDisposable - { - private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private readonly MessageQueue _receiveQueue; - - /// - /// Initializes a new instance of the class. - /// - /// Name of the queue. - public MSMQQueueWatcher(string queueName) - { - // open the queue - _receiveQueue = new MessageQueue(queueName) {Formatter = new BinaryMessageFormatter()}; - } - - /// - /// Closes the queue. - /// - public void CloseQueue() - { - _receiveQueue.Close(); - } - - /// - /// Recieves the message. - /// - /// - /// The milliseconds. - /// - public T RecieveMessage(int milliseconds) where T : class - { - var t = default(T); - try - { - var myMessage = _receiveQueue.Receive(TimeSpan.FromMilliseconds(milliseconds)); - if (myMessage != null) t = myMessage.Body as T; - } - catch (MessageQueueException e) - { - // if MessageQueue.Receive times out, we'll ignore the exception - // otherwise, do something useful with the error (log, display, etc.) - if (e.MessageQueueErrorCode != MessageQueueErrorCode.IOTimeout) - { - Log.ErrorFormat("Error: ({0}) {1}", e.ErrorCode, e.Message); - } - } - return t; - } - - /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// - public void Dispose() - { - CloseQueue(); - } - } -} diff --git a/SocketService/Command/MSMQQueueWrapper.cs b/SocketService/Command/MSMQQueueWrapper.cs deleted file mode 100644 index dfa007b..0000000 --- a/SocketService/Command/MSMQQueueWrapper.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Messaging; -using System.Configuration; -using log4net; -using System.Reflection; -using SocketServer.Configuration; - -namespace SocketServer.Command -{ - public class MSMQQueueWrapper - { - private static readonly string QueuePath; - private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - static MSMQQueueWrapper() - { - SocketServerConfiguration config = ServerConfigurationHelper.GetServerConfiguration(); - - if (config.Queues.Count > 0) - { - QueuePath = config.Queues[0].QueuePath; - } - else - { - throw new Exception("No queues specified in configuration."); - } - } - - /// - /// Queues the command. - /// - /// The c. - public static void QueueCommand(ICommand c) - { - try - { - // open the queue - var mq = new MessageQueue(QueuePath) - {DefaultPropertiesToSend = {Recoverable = true}, Formatter = new BinaryMessageFormatter()}; - - // set the message to durable. - - // set the formatter to Binary, default is XML - - // send the command object - mq.Send(c, "Command Message"); - mq.Close(); - } - catch (Exception e) - { - Log.ErrorFormat("Error: {0}", e.Message); - } - } - - } -} diff --git a/SocketService/Command/NegotiateKeysCommand.cs b/SocketService/Command/NegotiateKeysCommand.cs deleted file mode 100644 index ca879ef..0000000 --- a/SocketService/Command/NegotiateKeysCommand.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using SocketServer.Net.Client; -using SocketServer.Shared.Response; -using SocketServer.Crypto; -using Org.BouncyCastle.Crypto.Generators; -using Org.BouncyCastle.Security; -using Org.BouncyCastle.Crypto.Parameters; -using Org.BouncyCastle.X509; -using Org.BouncyCastle.Math; -using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Asn1.X509; -using SocketServer.Shared; -using SocketServer.Shared.Serialization; -using SocketServer.Shared.Network; - -namespace SocketServer.Command -{ - [Serializable] - public class NegotiateKeysCommand : BaseCommandHandler - { - private readonly Guid _clientGuid; - public NegotiateKeysCommand(Guid clientGuid) - { - _clientGuid = clientGuid; - } - - /// - /// Executes this instance. - /// - public override void Execute() - { - - ClientConnection connection = ConnectionRepository.Instance.Query(c => c.ClientId == _clientGuid).FirstOrDefault(); - if (connection != null) - { - //SubjectPublicKeyInfo publicKeyInfo - // = SubjectPublicKeyInfoFactory - // .CreateSubjectPublicKeyInfo(connection.ServerAuthority.GetPublicKeyParameter()); - - //NegotiateKeysResponse response = new NegotiateKeysResponse() - //{ - // ServerPublicKey = publicKeyInfo.ToAsn1Object().GetDerEncoded(), - // Prime = connection.ServerAuthority.P.ToString(16), - // G = connection.ServerAuthority.G.ToString(16) - //}; - - //MSMQQueueWrapper.QueueCommand( - // new SendServerResponseCommand( - // _clientGuid, - // XmlSerializationHelper.Serialize(response), - // ResponseTypes.NegotiateKeysResponse, - // connection.RequestHeader.MessageHeader)); - - } - } - } -} diff --git a/SocketService/Command/ParseRequestCommand.cs b/SocketService/Command/ParseRequestCommand.cs deleted file mode 100644 index 1e6fec0..0000000 --- a/SocketService/Command/ParseRequestCommand.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Linq; -using SocketServer.Messaging; -using SocketServer.Crypto; -using SocketServer.Net.Client; -using SocketServer.Repository; -using SocketServer.Shared; -using SocketServer.Shared.Request; - -namespace SocketServer.Command -{ - [Serializable] - class ParseRequestCommand : BaseMessageHandler - { - private readonly byte[] _serialized; - private readonly Guid _clientId; - - public ParseRequestCommand(Guid clientId, byte[] serialized) - { - _serialized = serialized; - _clientId = clientId; - } - - public override void Execute() - { - //var requestWrapper = ObjectSerialize.Deserialize(_serialized); - //var payload = DecryptRequest(requestWrapper); - - //var handlerType = payload.GetType(); - //var handlerList = ServiceHandlerLookup.Instance.GetHandlerListByType(handlerType); - - //MSMQQueueWrapper.QueueCommand( - // new HandleClientRequestCommand(_clientId, payload, handlerList) - //); - } - - //private object DecryptRequest(ClientRequest requestWrapper) - //{ - // //// switch on encryption type, and create a decryptor for that type - // //// with the remote private key and iv as salt - // //var algorithm = AlgorithmType.AES; - - // //switch (requestWrapper.Encryption) - // //{ - // // case EncryptionType.DES: - // // algorithm = AlgorithmType.DES; - // // break; - - // // case EncryptionType.TripleDES: - // // algorithm = AlgorithmType.TripleDES; - // // break; - - // // case EncryptionType.None: - // // algorithm = AlgorithmType.None; - // // break; - // //} - - - // //if (algorithm == AlgorithmType.None) - // //{ - // // return ObjectSerialize.Deserialize(requestWrapper.RequestData); - // //} - - // //var connection = ConnectionRepository.Instance.Query( c => c.ClientId == _clientId).FirstOrDefault(); - // //if (connection == null) - // //{ - // // return null; - // //} - - // //var privateKey = connection.Provider.Agree(); - // //using (var cryptoWrapper = CryptoManager.CreateDecryptor(algorithm, privateKey, requestWrapper.EncryptionPublicKey)) - // //{ - // // return ObjectSerialize.Deserialize(cryptoWrapper.Decrypt(requestWrapper.RequestData)); - // //} - - // //var privateKey = connection.SecureKeyProvider.CreatePrivateKey(connection.RemotePublicKey); - // //using (var cryptoWrapper = CryptoManager.CreateDecryptor(algorithm, - // // privateKey.ToByteArray(), - // // requestWrapper.EncryptionPublicKey)) - // //{ - // // return ObjectSerialize.Deserialize(cryptoWrapper.Decrypt(requestWrapper.RequestData)); - // //} - - // return null; - //} - } -} diff --git a/SocketService/Command/ParseRequestCommand.cs.orig b/SocketService/Command/ParseRequestCommand.cs.orig deleted file mode 100644 index 6f585c2..0000000 --- a/SocketService/Command/ParseRequestCommand.cs.orig +++ /dev/null @@ -1,86 +0,0 @@ -using System; -<<<<<<< Updated upstream -using SocketService.Client.Core.Request; -using SocketService.Core.Crypto; -using SocketService.Core.Messaging; -======= -using System.Linq; -using SocketService.Framework.Client.Request; -using SocketService.Framework.Messaging; -using SocketService.Framework.Client.Serialize; -using SocketService.Crypto; ->>>>>>> Stashed changes -using SocketService.Net.Client; -using SocketService.Repository; -using SocketService.Shared; - -namespace SocketService.Command -{ - [Serializable] - class ParseRequestCommand : BaseMessageHandler - { - private readonly byte[] _serialized; - private readonly Guid _clientId; - - public ParseRequestCommand(Guid clientId, byte[] serialized) - { - _serialized = serialized; - _clientId = clientId; - } - - public override void Execute() - { - var requestWrapper = ObjectSerialize.Deserialize(_serialized); - var payload = DecryptRequest(requestWrapper); - - var handlerType = payload.GetType(); - var handlerList = ServiceHandlerLookup.Instance.GetHandlerListByType(handlerType); - - MSMQQueueWrapper.QueueCommand( - new HandleClientRequestCommand(_clientId, payload, handlerList) - ); - } - - private object DecryptRequest(ClientRequestWrapper requestWrapper) - { - // switch on encryption type, and create a decryptor for that type - // with the remote private key and iv as salt - var algorithm = AlgorithmType.AES; - - switch (requestWrapper.Encryption) - { - case EncryptionType.DES: - algorithm = AlgorithmType.DES; - break; - - case EncryptionType.TripleDES: - algorithm = AlgorithmType.TripleDES; - break; - - case EncryptionType.None: - algorithm = AlgorithmType.None; - break; - } - - - if (algorithm == AlgorithmType.None) - { - return ObjectSerialize.Deserialize(requestWrapper.RequestData); - } - - var connection = ConnectionRepository.Instance.Query( c => c.ClientId == _clientId).FirstOrDefault(); - if (connection == null) - { - return null; - } - - var privateKey = connection.SecureKeyProvider.CreatePrivateKey(connection.RemotePublicKey); - using (var cryptoWrapper = Wrapper.CreateDecryptor(algorithm, - privateKey.ToByteArray(), - requestWrapper.EncryptionPublicKey)) - { - return ObjectSerialize.Deserialize(cryptoWrapper.Decrypt(requestWrapper.RequestData)); - } - } - } -} diff --git a/SocketService/Command/PublicMessageCommand.cs b/SocketService/Command/PublicMessageCommand.cs deleted file mode 100644 index 8fa6ac2..0000000 --- a/SocketService/Command/PublicMessageCommand.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; - -namespace SocketServer.Command -{ - [Serializable] - public class PublicMessageCommand : BaseCommandHandler - { - private readonly string _message; - private readonly int _roomId; - private readonly string _user; - private readonly int _zoneId; - - public PublicMessageCommand(int zoneId, int roomId, string user, string message) - { - _zoneId = zoneId; - _roomId = roomId; - _user = user; - _message = message; - } - - public override void Execute() - { - //Room room = - //MSMQQueueWrapper.QueueCommand( - // new BroadcastObjectCommand(UserRepository.Instance.Find(.ToArray(), - // new PublicMessageEvent() { ZoneId = _zoneId, RoomId = _roomId, UserName = _user, Message = _message } - // ) - //); - - //// check if room has any plugins, call the plugin UserSendPublicMessage event - //Room room = RoomRepository.Instance.FindByName(_room); - //if (room != null) - //{ - // ChainAction lastAction = ChainAction.NoAction; - // foreach (IPlugin plugin in room.GetRoomPlugins()) - // { - // lastAction = plugin.UserSendPublicMessage(new UserPublicMessageContext() { Zone = _zone, Room = _room, User = _user, Message = _message }); - // if ( lastAction == ChainAction.Fail || lastAction == ChainAction.Stop) - // { - // // we are done - // break; - // } - // } - - // // now check for last action - // if (lastAction == ChainAction.Fail) - // { - // // we had a fail action, handle it somehow? - // } - //} - } - } -} \ No newline at end of file diff --git a/SocketService/Command/SendMessageCommand.cs b/SocketService/Command/SendMessageCommand.cs deleted file mode 100644 index eeebe3a..0000000 --- a/SocketService/Command/SendMessageCommand.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using SocketServer.Messaging; -using SocketServer.Net; -using SocketServer.Shared; -using SocketServer.Shared.Sockets; -using SocketServer.Shared.Interop.Java; -using System.Xml.Serialization; -using System.Text; -using System.IO; -using SocketServer.Shared.Serialization; - -namespace SocketServer.Command -{ - [Serializable] - internal class SendMessageCommand : BaseMessageHandler - { - private readonly Guid _clientId; - private readonly string _message; - - public SendMessageCommand(Guid clientId, string message) - { - _clientId = clientId; - _message = message; - } - - public override void Execute() - { - ZipSocket connection = SocketRepository.Instance.FindByClientId(_clientId); - if (connection != null) - { - connection.SendData(_message.SerializeUTF()); - } - } - } -} \ No newline at end of file diff --git a/SocketService/Command/SendServerResponseCommand.cs b/SocketService/Command/SendServerResponseCommand.cs deleted file mode 100644 index 1bbc00d..0000000 --- a/SocketService/Command/SendServerResponseCommand.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using SocketServer.Shared; -using SocketServer.Shared.Header; -using SocketServer.Net.Client; -using SocketServer.Crypto; -using SocketServer.Shared.Serialization; -using Org.BouncyCastle.Crypto.Parameters; -using Org.BouncyCastle.Math; -using Org.BouncyCastle.Security; -using SocketServer.Shared.Sockets; -using SocketServer.Net; -using SocketServer.Shared.Network; - -namespace SocketServer.Command -{ - [Serializable] - public class SendServerResponseCommand : BaseCommandHandler - { - private readonly Guid _clientId; - private readonly string _response; - private readonly CompressionTypes _compressionType; - private readonly EncryptionTypes _encryptionType; - private readonly ResponseTypes _responseType; - - public SendServerResponseCommand(Guid clientId, string response, ResponseTypes responseType, MessageHeader header) - { - _clientId = clientId; - _response = response; - _responseType = responseType; - _compressionType = header.CompressionType; - _encryptionType = header.EncryptionHeader.EncryptionType; - } - - - public override void Execute() - { - ClientConnection client = ConnectionRepository.Instance.Query(c => c.ClientId == _clientId).FirstOrDefault(); - if (client != null) - { - ResponseHeader responseHeader = ResponseBuilder.BuildResponseHeader(_encryptionType, _compressionType, _responseType); - ZipSocket connection = SocketRepository.Instance.FindByClientId(_clientId); - if (connection != null) - { - connection.SendData( - XmlSerializationHelper - .Serialize(responseHeader) - .SerializeUTF()); - - - connection.SendData( - ResponseBuilder.ProcessResponse( - client.ServerAuthority, - client - .RequestHeader - .MessageHeader - .EncryptionHeader - .PublicKey, - responseHeader, - _response).SerializeUTF()); - } - } - } - } -} diff --git a/SocketService/Command/ServerMessageCommand.cs b/SocketService/Command/ServerMessageCommand.cs deleted file mode 100644 index cbd6e6a..0000000 --- a/SocketService/Command/ServerMessageCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using SocketService.Framework.Messaging; - -namespace SocketService.Command -{ - public class ServerMessageCommand : ICommand - { - private IServerMessage _message; - - public ServerMessageCommand(IServerMessage message) - { - _message = message; - } - - public void Execute() - { - // execution is simple, just call process message - // pass in the server context, ah, that's the trick isn't it? - _message.ProcessMessage(); - } - } -} diff --git a/SocketService/Command/ServerStartingCommand.cs b/SocketService/Command/ServerStartingCommand.cs deleted file mode 100644 index c0f48e8..0000000 --- a/SocketService/Command/ServerStartingCommand.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using SocketServer.Actions; - -namespace SocketServer.Command -{ - [Serializable] - public class ServerStartingCommand : BaseCommandHandler - { - public override void Execute() - { - // remove all users first - UserActionEngine.Instance.RemoveAllUsers(); - - // remove all non-persistent rooms - RoomActionEngine.Instance.RemoveNonPersistentRooms(); - } - } -} \ No newline at end of file diff --git a/SocketService/Command/UpdateRoomVariableCommand.cs b/SocketService/Command/UpdateRoomVariableCommand.cs deleted file mode 100644 index 2e25666..0000000 --- a/SocketService/Command/UpdateRoomVariableCommand.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Linq; -using SocketServer.Data; -using SocketServer.Repository; - -namespace SocketServer.Command -{ - [Serializable] - public class UpdateRoomVariableCommand : BaseCommandHandler - { - private readonly Guid _clientId; - private readonly string _name; - private readonly int _roomId; - private readonly object _so; - private readonly int _zoneId; - - public UpdateRoomVariableCommand(Guid clientId, int zoneId, int roomId, string name, object value) - { - _zoneId = zoneId; - _roomId = roomId; - _name = name; - _so = value; - _clientId = clientId; - } - - - public override void Execute() - { - Room room = RoomRepository.Instance.Find(_roomId); - - //RoomActionEngine.Instance.UpdateRoomVariable(room.Id, _name, _so); - - //MSMQQueueWrapper.QueueCommand( - // new BroadcastMessageCommand( - // room.Users.Select(u => u == null ? new Guid() : u.ClientKey).ToArray(), - // new RoomVariableUpdateEvent - // { - // ZoneId = _zoneId, - // RoomId = room.Id, - // Name = _name, - // Value = _so, - // Action = RoomVariableUpdateAction.Update - // } - // ) - // ); - - //MSMQQueueWrapper.QueueCommand( - // new SendObjectCommand( - // _clientId, - // new UpdateRoomVariableResponse() - // { - // Room = _roomName, - // Name = _name, - // Value = _so, - // } - // ) - //); - } - } -} \ No newline at end of file diff --git a/SocketService/Configuration/MessageQueueCollection.cs b/SocketService/Configuration/MessageQueueCollection.cs deleted file mode 100644 index 3fafcb4..0000000 --- a/SocketService/Configuration/MessageQueueCollection.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Configuration -{ - public class MessageQueueCollection : ConfigurationElementCollection - { - public MessageQueueCollection() - { - } - - public MessageQueueConfigurationElement this[int index] - { - get { return (MessageQueueConfigurationElement)BaseGet(index); } - set - { - if (BaseGet(index) != null) - { - BaseRemoveAt(index); - } - BaseAdd(index, value); - } - } - - public void Add(MessageQueueConfigurationElement element) - { - BaseAdd(element); - } - - public void Clear() - { - BaseClear(); - } - - protected override ConfigurationElement CreateNewElement() - { - return new MessageQueueConfigurationElement(); - } - - protected override object GetElementKey(ConfigurationElement element) - { - return ((MessageQueueConfigurationElement)element).QueueName; - } - - public void Remove(MessageQueueConfigurationElement element) - { - BaseRemove(element.QueueName); - } - - public void RemoveAt(int index) - { - BaseRemoveAt(index); - } - - public void Remove(string name) - { - BaseRemove(name); - } - } -} diff --git a/SocketService/Configuration/MessageQueueConfigurationElement.cs b/SocketService/Configuration/MessageQueueConfigurationElement.cs deleted file mode 100644 index 3ede4f9..0000000 --- a/SocketService/Configuration/MessageQueueConfigurationElement.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Configuration -{ - public class MessageQueueConfigurationElement : ConfigurationElement - { - public MessageQueueConfigurationElement() - { - } - - public MessageQueueConfigurationElement(String queueKey, String queueName) - { - QueueName = queueKey; - QueuePath = queueName; - } - - [ConfigurationProperty("name", IsRequired = true)] - public String QueueName - { - get - { return (String)this["name"]; } - set - { this["name"] = value; } - } - - [ConfigurationProperty("path", IsRequired = true)] - public String QueuePath - { - get - { return (String)this["path"]; } - set - { this["path"] = value; } - } - - } -} diff --git a/SocketService/Configuration/PluginInfoInstanceCollection.cs b/SocketService/Configuration/PluginInfoInstanceCollection.cs deleted file mode 100644 index c6a7412..0000000 --- a/SocketService/Configuration/PluginInfoInstanceCollection.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Configuration; - -namespace SocketServer.Configuration -{ - public class PluginInfoInstanceCollection : ConfigurationElementCollection - { - protected override ConfigurationElement CreateNewElement() - { - return new PluginInfoInstanceElement(); - } - - protected override object GetElementKey(ConfigurationElement element) - { - return ((PluginInfoInstanceElement) element).Name; - } - } -} \ No newline at end of file diff --git a/SocketService/Configuration/PluginInfoInstanceElement.cs b/SocketService/Configuration/PluginInfoInstanceElement.cs deleted file mode 100644 index df297d2..0000000 --- a/SocketService/Configuration/PluginInfoInstanceElement.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Configuration; - -namespace SocketServer.Configuration -{ - public class PluginInfoInstanceElement : ConfigurationElement - { - [ConfigurationProperty("name", IsKey = true, IsRequired = true)] - public string Name - { - get { return (string) base["name"]; } - set { base["name"] = value; } - } - - [ConfigurationProperty("path", IsRequired = true)] - public string Path - { - get { return (string) base["path"]; } - set { base["path"] = value; } - } - } -} \ No newline at end of file diff --git a/SocketService/Configuration/RequestHandlerCollection.cs b/SocketService/Configuration/RequestHandlerCollection.cs deleted file mode 100644 index a55fa51..0000000 --- a/SocketService/Configuration/RequestHandlerCollection.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Configuration -{ - public class RequestHandlerCollection : ConfigurationElementCollection - { - public RequestHandlerCollection() - { - } - - public RequestHandlerConfigurationElement this[int index] - { - get { return (RequestHandlerConfigurationElement)BaseGet(index); } - set - { - if (BaseGet(index) != null) - { - BaseRemoveAt(index); - } - BaseAdd(index, value); - } - } - - public void Add(RequestHandlerConfigurationElement serviceConfig) - { - BaseAdd(serviceConfig); - } - - public void Clear() - { - BaseClear(); - } - - protected override ConfigurationElement CreateNewElement() - { - return new RequestHandlerConfigurationElement(); - } - - protected override object GetElementKey(ConfigurationElement element) - { - return ((RequestHandlerConfigurationElement)element).RequestType; - } - - public void Remove(RequestHandlerConfigurationElement serviceConfig) - { - BaseRemove(serviceConfig.RequestType); - } - - public void RemoveAt(int index) - { - BaseRemoveAt(index); - } - - public void Remove(string name) - { - BaseRemove(name); - } - } -} diff --git a/SocketService/Configuration/RequestHandlerConfigurationElement.cs b/SocketService/Configuration/RequestHandlerConfigurationElement.cs deleted file mode 100644 index 7c5fdd6..0000000 --- a/SocketService/Configuration/RequestHandlerConfigurationElement.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Configuration -{ - public class RequestHandlerConfigurationElement : ConfigurationElement - { - public RequestHandlerConfigurationElement() - { - } - - public RequestHandlerConfigurationElement(String requestTypeTag, String requestType, String handlerType) - { - Key = requestTypeTag; - HandlerType = handlerType; - RequestType = requestType; - } - - [ConfigurationProperty("key", IsRequired = true)] - public String Key - { - get - { return (String)this["key"]; } - set - { this["key"] = value; } - } - - [ConfigurationProperty("requestType", IsRequired = true)] - public String RequestType - { - get - { return (String)this["requestType"]; } - set - { this["requestType"] = value; } - } - - [ConfigurationProperty("handlerType", IsRequired = true)] - public String HandlerType - { - get - { return (String)this["handlerType"]; } - set - { this["handlerType"] = value; } - } - } -} diff --git a/SocketService/Configuration/RequestHandlerConfigurationSection.cs b/SocketService/Configuration/RequestHandlerConfigurationSection.cs deleted file mode 100644 index 0bd697e..0000000 --- a/SocketService/Configuration/RequestHandlerConfigurationSection.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Configuration; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer.Core.Configuration -{ - public class RequestHandlerConfigurationSection : ConfigurationSection - { - [ConfigurationProperty("Handlers", IsDefaultCollection = false)] - [ConfigurationCollection(typeof(RequestHandlerCollection), - AddItemName = "add", - ClearItemsName = "clear", - RemoveItemName = "remove")] - public RequestHandlerCollection Handlers - { - get - { - return (RequestHandlerCollection)base["Handlers"]; - } - } - } -} diff --git a/SocketService/Configuration/ServerConfigurationHelper.cs b/SocketService/Configuration/ServerConfigurationHelper.cs deleted file mode 100644 index a9324ea..0000000 --- a/SocketService/Configuration/ServerConfigurationHelper.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Configuration; - -namespace SocketServer.Configuration -{ - public static class ServerConfigurationHelper - { - public static SocketServerConfiguration GetServerConfiguration() - { - return (SocketServerConfiguration)ConfigurationManager. - GetSection("socketServerConfiguration"); - } - } -} diff --git a/SocketService/Configuration/SocketServerConfiguration.cs b/SocketService/Configuration/SocketServerConfiguration.cs deleted file mode 100644 index 515112c..0000000 --- a/SocketService/Configuration/SocketServerConfiguration.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Configuration; - -namespace SocketServer.Configuration -{ - public class SocketServerConfiguration : ConfigurationSection - { - [ConfigurationProperty("plugins", IsRequired = true, IsDefaultCollection = true)] - public PluginInfoInstanceCollection Plugins - { - get { return (PluginInfoInstanceCollection)this["plugins"]; } - set { this["plugins"] = value; } - } - - [ConfigurationProperty("listenPort", IsRequired = true)] - public int ListenPort - { - get { return (int)this["listenPort"]; } - set { this["listenPort"] = value; } - } - - [ConfigurationProperty("handlers", IsDefaultCollection = false)] - [ConfigurationCollection(typeof(RequestHandlerCollection), - AddItemName = "add", - ClearItemsName = "clear", - RemoveItemName = "remove")] - public RequestHandlerCollection Handlers - { - get - { - return (RequestHandlerCollection)base["handlers"]; - } - } - - [ConfigurationProperty("queues", IsDefaultCollection = false)] - [ConfigurationCollection(typeof(MessageQueueCollection), - AddItemName = "add", - ClearItemsName = "clear", - RemoveItemName = "remove")] - public MessageQueueCollection Queues - { - get - { - return (MessageQueueCollection)base["queues"]; - } - } - } -} \ No newline at end of file diff --git a/SocketService/Data/IRepository.cs b/SocketService/Data/IRepository.cs deleted file mode 100644 index d467c01..0000000 --- a/SocketService/Data/IRepository.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Linq.Expressions; - -namespace SocketService.Framework.Data -{ - public interface IRepository - { - T Find(int id); - T[] GetAll(); - IQueryable Query(Expression> filter); - } -} diff --git a/SocketService/Data/ServerDataModel.edmx b/SocketService/Data/ServerDataModel.edmx deleted file mode 100644 index 746e3ff..0000000 --- a/SocketService/Data/ServerDataModel.edmx +++ /dev/null @@ -1,534 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SocketService/Data/ServerDataModel.edmx.sqlce b/SocketService/Data/ServerDataModel.edmx.sqlce deleted file mode 100644 index 8c6adc3..0000000 --- a/SocketService/Data/ServerDataModel.edmx.sqlce +++ /dev/null @@ -1,284 +0,0 @@ - --- -------------------------------------------------- --- Entity Designer DDL Script for SQL Server Compact Edition --- -------------------------------------------------- --- Date Created: 09/26/2011 18:46:02 --- Generated from EDMX file: C:\Users\MonkeyBreath\Desktop\SocketServer\SocketService.Framework\Data\ServerDataModel.edmx --- -------------------------------------------------- - - --- -------------------------------------------------- --- Dropping existing FOREIGN KEY constraints --- NOTE: if the constraint does not exist, an ignorable error will be reported. --- -------------------------------------------------- - - ALTER TABLE [Rooms] DROP CONSTRAINT [FK_ZoneRoom]; -GO - ALTER TABLE [Users] DROP CONSTRAINT [FK_RoomUser]; -GO - ALTER TABLE [Variables_RoomVariable] DROP CONSTRAINT [FK_RoomRoomVariable]; -GO - ALTER TABLE [Variables_UserVariable] DROP CONSTRAINT [FK_UserUserVariable]; -GO - ALTER TABLE [Plugins] DROP CONSTRAINT [FK_ExtensionPlugin]; -GO - ALTER TABLE [Plugins] DROP CONSTRAINT [FK_RoomPlugin]; -GO - ALTER TABLE [Variables_RoomVariable] DROP CONSTRAINT [FK_RoomVariable_inherits_Variable]; -GO - ALTER TABLE [Variables_UserVariable] DROP CONSTRAINT [FK_UserVariable_inherits_Variable]; -GO - --- -------------------------------------------------- --- Dropping existing tables --- NOTE: if the table does not exist, an ignorable error will be reported. --- -------------------------------------------------- - - DROP TABLE [Zones]; -GO - DROP TABLE [Rooms]; -GO - DROP TABLE [Users]; -GO - DROP TABLE [Variables]; -GO - DROP TABLE [Extensions]; -GO - DROP TABLE [Plugins]; -GO - DROP TABLE [Variables_RoomVariable]; -GO - DROP TABLE [Variables_UserVariable]; -GO - --- -------------------------------------------------- --- Creating all tables --- -------------------------------------------------- - --- Creating table 'Zones' -CREATE TABLE [Zones] ( - [Id] bigint NOT NULL, - [Name] nvarchar(4000) NOT NULL -); -GO - --- Creating table 'Rooms' -CREATE TABLE [Rooms] ( - [Id] bigint NOT NULL, - [Name] nvarchar(4000) NOT NULL, - [IsPersistable] bit NOT NULL, - [Capacity] int NOT NULL, - [IsPrivate] bit NOT NULL, - [Password] nvarchar(4000) NOT NULL, - [ZoneId] bigint NOT NULL -); -GO - --- Creating table 'Users' -CREATE TABLE [Users] ( - [Id] bigint NOT NULL, - [Name] nvarchar(4000) NOT NULL, - [ClientKey] uniqueidentifier NOT NULL, - [RoomId] bigint NOT NULL -); -GO - --- Creating table 'Variables' -CREATE TABLE [Variables] ( - [Id] bigint NOT NULL, - [Name] nvarchar(4000) NOT NULL, - [Value] varbinary(8000) NOT NULL -); -GO - --- Creating table 'Extensions' -CREATE TABLE [Extensions] ( - [Id] bigint NOT NULL, - [Name] nvarchar(4000) NOT NULL -); -GO - --- Creating table 'Plugins' -CREATE TABLE [Plugins] ( - [Id] bigint IDENTITY(1,1) NOT NULL, - [Handle] nvarchar(4000) NOT NULL, - [ExtensionId] bigint NOT NULL, - [RoomId] bigint NOT NULL -); -GO - --- Creating table 'Variables_RoomVariable' -CREATE TABLE [Variables_RoomVariable] ( - [RoomId] bigint NOT NULL, - [Id] bigint NOT NULL -); -GO - --- Creating table 'Variables_UserVariable' -CREATE TABLE [Variables_UserVariable] ( - [UserId] bigint NOT NULL, - [Id] bigint NOT NULL -); -GO - --- -------------------------------------------------- --- Creating all PRIMARY KEY constraints --- -------------------------------------------------- - --- Creating primary key on [Id] in table 'Zones' -ALTER TABLE [Zones] -ADD CONSTRAINT [PK_Zones] - PRIMARY KEY ([Id] ); -GO - --- Creating primary key on [Id] in table 'Rooms' -ALTER TABLE [Rooms] -ADD CONSTRAINT [PK_Rooms] - PRIMARY KEY ([Id] ); -GO - --- Creating primary key on [Id] in table 'Users' -ALTER TABLE [Users] -ADD CONSTRAINT [PK_Users] - PRIMARY KEY ([Id] ); -GO - --- Creating primary key on [Id] in table 'Variables' -ALTER TABLE [Variables] -ADD CONSTRAINT [PK_Variables] - PRIMARY KEY ([Id] ); -GO - --- Creating primary key on [Id] in table 'Extensions' -ALTER TABLE [Extensions] -ADD CONSTRAINT [PK_Extensions] - PRIMARY KEY ([Id] ); -GO - --- Creating primary key on [Id] in table 'Plugins' -ALTER TABLE [Plugins] -ADD CONSTRAINT [PK_Plugins] - PRIMARY KEY ([Id] ); -GO - --- Creating primary key on [Id] in table 'Variables_RoomVariable' -ALTER TABLE [Variables_RoomVariable] -ADD CONSTRAINT [PK_Variables_RoomVariable] - PRIMARY KEY ([Id] ); -GO - --- Creating primary key on [Id] in table 'Variables_UserVariable' -ALTER TABLE [Variables_UserVariable] -ADD CONSTRAINT [PK_Variables_UserVariable] - PRIMARY KEY ([Id] ); -GO - --- -------------------------------------------------- --- Creating all FOREIGN KEY constraints --- -------------------------------------------------- - --- Creating foreign key on [ZoneId] in table 'Rooms' -ALTER TABLE [Rooms] -ADD CONSTRAINT [FK_ZoneRoom] - FOREIGN KEY ([ZoneId]) - REFERENCES [Zones] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; - --- Creating non-clustered index for FOREIGN KEY 'FK_ZoneRoom' -CREATE INDEX [IX_FK_ZoneRoom] -ON [Rooms] - ([ZoneId]); -GO - --- Creating foreign key on [RoomId] in table 'Users' -ALTER TABLE [Users] -ADD CONSTRAINT [FK_RoomUser] - FOREIGN KEY ([RoomId]) - REFERENCES [Rooms] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; - --- Creating non-clustered index for FOREIGN KEY 'FK_RoomUser' -CREATE INDEX [IX_FK_RoomUser] -ON [Users] - ([RoomId]); -GO - --- Creating foreign key on [RoomId] in table 'Variables_RoomVariable' -ALTER TABLE [Variables_RoomVariable] -ADD CONSTRAINT [FK_RoomRoomVariable] - FOREIGN KEY ([RoomId]) - REFERENCES [Rooms] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; - --- Creating non-clustered index for FOREIGN KEY 'FK_RoomRoomVariable' -CREATE INDEX [IX_FK_RoomRoomVariable] -ON [Variables_RoomVariable] - ([RoomId]); -GO - --- Creating foreign key on [UserId] in table 'Variables_UserVariable' -ALTER TABLE [Variables_UserVariable] -ADD CONSTRAINT [FK_UserUserVariable] - FOREIGN KEY ([UserId]) - REFERENCES [Users] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; - --- Creating non-clustered index for FOREIGN KEY 'FK_UserUserVariable' -CREATE INDEX [IX_FK_UserUserVariable] -ON [Variables_UserVariable] - ([UserId]); -GO - --- Creating foreign key on [ExtensionId] in table 'Plugins' -ALTER TABLE [Plugins] -ADD CONSTRAINT [FK_ExtensionPlugin] - FOREIGN KEY ([ExtensionId]) - REFERENCES [Extensions] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; - --- Creating non-clustered index for FOREIGN KEY 'FK_ExtensionPlugin' -CREATE INDEX [IX_FK_ExtensionPlugin] -ON [Plugins] - ([ExtensionId]); -GO - --- Creating foreign key on [RoomId] in table 'Plugins' -ALTER TABLE [Plugins] -ADD CONSTRAINT [FK_RoomPlugin] - FOREIGN KEY ([RoomId]) - REFERENCES [Rooms] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; - --- Creating non-clustered index for FOREIGN KEY 'FK_RoomPlugin' -CREATE INDEX [IX_FK_RoomPlugin] -ON [Plugins] - ([RoomId]); -GO - --- Creating foreign key on [Id] in table 'Variables_RoomVariable' -ALTER TABLE [Variables_RoomVariable] -ADD CONSTRAINT [FK_RoomVariable_inherits_Variable] - FOREIGN KEY ([Id]) - REFERENCES [Variables] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; -GO - --- Creating foreign key on [Id] in table 'Variables_UserVariable' -ALTER TABLE [Variables_UserVariable] -ADD CONSTRAINT [FK_UserVariable_inherits_Variable] - FOREIGN KEY ([Id]) - REFERENCES [Variables] - ([Id]) - ON DELETE NO ACTION ON UPDATE NO ACTION; -GO - --- -------------------------------------------------- --- Script has ended --- -------------------------------------------------- \ No newline at end of file diff --git a/SocketService/Handler/EnableEncryptionHandler.cs b/SocketService/Handler/EnableEncryptionHandler.cs deleted file mode 100644 index b0b2e2a..0000000 --- a/SocketService/Handler/EnableEncryptionHandler.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using SocketServer.Messages; -using SocketServer.Shared.Network; -using Org.BouncyCastle.Crypto.Generators; -using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Security; -using Org.BouncyCastle.Crypto.Parameters; -using SocketServer.Crypto; -using SocketServer.Shared.Messaging; - -namespace SocketServer.Handler -{ - public class EnableEncryptionHandler : IRequestHandler - { - public void HandleRequest(EnableEncryptionMessage request, ClientConnection connection) - { - - connection.Send( - new EnableEncryptionResponse() - { - MessageID = "EnableEncryptionResponse", - Enabled = true - }); - - // replace 0 envelope with a new encrypted message envelope - connection.Envelope = new EncryptedMessageEnvelope(new SharedKeyCrypto(connection.ServerAuthority.Parameters, connection.ServerAuthority.KeyPair, request.PublicKeyInfo)); - - } - } -} diff --git a/SocketService/Handler/LoginRequestHandler.cs b/SocketService/Handler/LoginRequestHandler.cs deleted file mode 100644 index 4bf7a98..0000000 --- a/SocketService/Handler/LoginRequestHandler.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using SocketServer.Command; -using SocketServer.Shared.Request; - -namespace SocketServer.Handler -{ - public class LoginRequestHandler : IRequestHandler - { - public void HandleRequest(LoginRequest request, Guid connectionId) - { - if (request != null) - { - MSMQQueueWrapper.QueueCommand( - new LoginUserCommand(connectionId, request.LoginName) - ); - - } - - } - - public void HandleRequest(LoginRequest request, Shared.Network.ClientConnection connection) - { - throw new NotImplementedException(); - } - } -} diff --git a/SocketService/Net/INetworkListener.cs b/SocketService/Net/INetworkListener.cs deleted file mode 100644 index 5c69ce5..0000000 --- a/SocketService/Net/INetworkListener.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SocketServer -{ - public interface INetworkListener - { - void Initialize(int port); - - INetworkTransport AcceptClient(); - - void Start(); - - void Stop(); - } -} diff --git a/SocketService/Net/INetworkTransport.cs b/SocketService/Net/INetworkTransport.cs deleted file mode 100644 index 69146e0..0000000 --- a/SocketService/Net/INetworkTransport.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Net; -using System.IO; - -namespace SocketServer -{ - public interface INetworkTransport - { - string Address { get; set; } - int Port { get; set; } - - EndPoint RemoteEndPoint { get; } - - void Connect(); - void Disconnect(bool force); - bool IsConnected { get; } - bool HasConnection { get; } - Stream Stream { get; } - - int SendTimeout { get; set; } - int ReceiveTimeout { get; set; } - } -} diff --git a/SocketService/Net/SocketManager.cs b/SocketService/Net/SocketManager.cs deleted file mode 100644 index a02340d..0000000 --- a/SocketService/Net/SocketManager.cs +++ /dev/null @@ -1,225 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Configuration; -using System.Reflection; -using log4net; -using SocketServer.Command; -using SocketServer.Configuration; -using SocketServer.Net.Client; -using SocketServer.Crypto; -using System.Xml.Serialization; -using SocketServer.Shared.Header; -using SocketServer.Shared; -using System.Collections.Generic; -using SocketServer.Shared.Serialization; -using SocketServer.Shared.Reflection; -using SocketServer.Shared.Network; -using SocketServer.Repository; -using SocketServer.Messages; - -namespace SocketServer.Net -{ - public class SocketManager //: IServerContext - { - private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private Dictionary requestHandlers = new Dictionary(); - - private readonly object handlerLock = new object(); - - private readonly SocketServer _socketServer; - - //public event EventHandler ClientRequestReceived; - - /// - /// Initializes a new instance of the class. - /// - public SocketManager(SocketServerConfiguration config) - { - LoadHandlers(config); - - _socketServer = new SocketServer(); - _socketServer.ClientConnected += SocketServerClientConnecting; - _socketServer.ClientDisconnected += SocketServerClientDisconnecting; - _socketServer.MessageReceived += new EventHandler(socketServer_MessageReceived); - } - - void socketServer_MessageReceived(object sender, MessageEventArgs e) - { - lock (handlerLock) - { - if (requestHandlers.ContainsKey(e.Message.MessageID)) - { - ServiceHandlerRepository.Instance.InvokeHandler(e.Message.MessageID, e.Message, e.ClientConnection); - //ServiceHandlerRepository - //requestHandlers[e.Message.MessageID] - } - } - } - - //protected void SocketServerDataRecieved(object sender, DataRecievedArgs e) - //{ - // var connection = ConnectionRepository.Instance.Query( c => c.ClientId == e.ClientId).FirstOrDefault(); - // if (connection != null) - // { - // // update client buffer with new data - // connection.ClientBuffer.Write(e.Data); - - // bool done = false; - // while (!done) - // { - // done = true; - - // MemoryStream stream = new MemoryStream(connection.ClientBuffer.Buffer); - // switch (connection.CurrentState) - // { - // case ProtocolState.WaitingForHeader: - // { - // // check if there is a utf string available for reading - // // low level protocol is all utf strings - // string utfString = stream.ReadUTF(); - // if (utfString != null) - // { - // //TextReader reader = new StringReader(utfString); - // connection.RequestHeader - // = XmlSerializationHelper - // .DeSerialize(utfString); - - // // if we got a valid request header, move to next state - // // otherwise wait until we get a valid request header - // if (connection.RequestHeader != null) - // { - // connection.CurrentState = ProtocolState.WaitingForBody; - // } - // } - // } - // break; - - // case ProtocolState.WaitingForBody: - // { - // string rawRequestString = stream.ReadUTF(); - // if (rawRequestString != null) - // { - // if (_configuration.ContainsKey(connection.RequestHeader.RequestType.ToString())) - // { - // string key = connection.RequestHeader.RequestType.ToString(); - - // string requestHandlerType = _configuration[key].HandlerType; - // string requestType = _configuration[key].RequestType; - // string requestString = rawRequestString; - - // MSMQQueueWrapper.QueueCommand( - // new HandleClientRequestCommand( - // connection.ClientId, - // key, - // requestType, - // requestString)); - // } - - // connection.CurrentState = ProtocolState.WaitingForHeader; - // } - // } - // break; - // } - - // // fix up buffers - // connection.ClientBuffer = new ClientBuffer(); - - // // if any data left, fix up buffers - // if (stream.Length > stream.Position) - // { - // // left over bytes - // byte[] leftover = stream.Read((int)(stream.Length - stream.Position)); - // connection.ClientBuffer.Write(leftover); - - // // we are not done reading - // done = false; - // } - // } - // } - //} - - - - protected void SocketServerClientConnecting(object sender, ConnectArgs e) - { - Logger.InfoFormat("Client {0} connecting from {1}", e.ClientId, e.RemoteAddress); - - // send message to client - e.Connection.Send( - new ServerConnectionResponse() - { - MessageID = "ServerConnectionMessage", - DiffieHellmanInfo = new DiffieHellmanInfo() - { - G = e.Connection.ServerAuthority.G.ToString(16), - P = e.Connection.ServerAuthority.P.ToString(16), - PublicKeyInfo = e.Connection.ServerAuthority.GenerateEncodedPublicKeyInfo() - } - }); - } - - protected void SocketServerClientDisconnecting(object sender, DisconnectedArgs e) - { - MSMQQueueWrapper.QueueCommand(new LogoutUserCommand(e.ClientId)); - } - - //protected virtual void OnClientRequestReceived(Guid clientId, RequestHeader header, object request) - //{ - // EventHandler clientRequestReceived = ClientRequestReceived; - // if (clientRequestReceived != null) - // { - // var args = new ClientRequestEventArgs(clientId, header, request); - // clientRequestReceived(this, args); - // } - //} - - /// - /// Starts the server. - /// - public void StartServer() - { - SocketServerConfiguration configuration = null; - try - { - configuration = ServerConfigurationHelper.GetServerConfiguration(); - } - catch (Exception exception) - { - Logger.Error(exception.ToString()); - } - - if (configuration != null) - { - MSMQQueueWrapper.QueueCommand(new ServerStartingCommand()); - - _socketServer.StartServer(configuration.ListenPort); - - Logger.InfoFormat("Server started and listening on {0}", configuration.ListenPort); - } - } - - /// - /// Stops the server. - /// - public void StopServer() - { - _socketServer.StopServer(); - } - - //private static void ParseRequest(Guid clientId, byte[] requestData) - //{ - // MSMQQueueWrapper.QueueCommand(new ParseRequestCommand(clientId, requestData)); - //} - - - private void LoadHandlers(SocketServerConfiguration config) - { - foreach (RequestHandlerConfigurationElement element in config.Handlers) - { - // try to find enum type first - requestHandlers.Add(element.Key, element); - } - } - } -} \ No newline at end of file diff --git a/SocketService/Net/SocketServer.cs b/SocketService/Net/SocketServer.cs deleted file mode 100644 index c820a2d..0000000 --- a/SocketService/Net/SocketServer.cs +++ /dev/null @@ -1,482 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Sockets; -using System.Reflection; -using System.Threading; -using SocketServer.Net.Client; -using SocketServer.Shared.Sockets; -using log4net; -using SocketServer.Shared; -using SocketServer.Crypto; -using Org.BouncyCastle.Crypto.Generators; -using Org.BouncyCastle.Security; -using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Crypto.Parameters; -using SocketServer.Shared.Messaging; -using SocketServer.Shared.Network; - -namespace SocketServer.Net -{ - public class SocketServer - { - private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private readonly object clientSync = new object(); - //private readonly Mutex _clientListLock = new Mutex(); - - private readonly Dictionary _connectionList = new Dictionary(); - private readonly ManualResetEvent _stopEvent = new ManualResetEvent(false); - //private Socket _listenSocket; - - //private readonly IPAddress address = IPAddress.Any; - //private TcpListener listener; - private bool _stopped = true; - - private readonly INetworkListener listener; - public SocketServer(IPAddress address) - { - listener = new SocketListener(address); - } - - public SocketServer() - { - listener = new SocketListener(); - } - - /// - /// Gets or sets a value indicating whether this instance is stopped. - /// - /// - /// true if this instance is stopped; otherwise, false. - /// - public bool IsStopped - { - get - { - Thread.MemoryBarrier(); - return _stopped; - } - - set - { - _stopped = value; - Thread.MemoryBarrier(); - } - } - - #region Events - - /// - /// Raised when a Channel has disconnected remotely - /// - public event EventHandler ClientConnected; - - /// - /// Raised when a new incoming Channel has established a connection. - /// - public event EventHandler ClientDisconnected; - - /// - /// Event Raised whenever an incoming message is received - /// - public event EventHandler MessageReceived; - //{ - // add - // { - // lock (clientSync) - // { - // foreach (ClientConnection connection in _connectionList.Values) - // connection.MessageReceived += value; - // } - // } - // remove - // { - // lock (clientSync) - // { - // foreach (ClientConnection connection in _connectionList.Values) - // connection.MessageReceived -= value; - // } - // } - //} - - ///// - ///// Event Raised whenever an outgoing message is sent - ///// - //public event EventHandler MessageSent - //{ - // add - // { - // lock (clientSync) - // { - // foreach (ClientConnection channel in clients) - // channel.MessageSent += value; - // } - // } - // remove - // { - // lock (clientSync) - // { - // foreach (ClientConnection channel in clients) - // channel.MessageSent -= value; - // } - // } - //} - - #endregion Events - - public void StartServer(int serverPort) - { - if (IsStopped) - { - _stopEvent.Reset(); - - IsStopped = false; - - listener.Initialize(serverPort); - - var serverThread = new Thread(new ThreadStart(ServerMain)); - serverThread.Start(); - } - } - - /// - /// Stops the server. - /// - public void StopServer() - { - _stopEvent.Set(); - - IsStopped = true; - DisconnectAllClients(); - } - - /// - /// Disconnects the client. - /// - /// - public void DisconnectClient(Guid clientId) - { - OnClientDisconnected(this, new DisconnectedArgs() { ClientId = clientId }); - //lock (clientSync) - //{ - // try - // { - // if (_connectionList.ContainsKey(clientId)) - // { - // _connectionList[clientId].ClientSocket.Close(); - // OnClientDisconnected(clientId); - - // _connectionList.Remove(clientId); - // } - // } - // catch (Exception ex) - // { - // Log.ErrorFormat("Error: {0}", ex.Message); - // } - //} - } - - //protected virtual void OnDataRecieved(Guid clientId, byte[] data) - //{ - // EventHandler dataRecieved = DataRecieved; - // if (dataRecieved != null) - // { - // var args = new DataRecievedArgs(clientId, data); - // dataRecieved(this, args); - // } - //} - - protected virtual void OnClientConnected(Guid clientId, ClientConnection connection, string remoteAddress) - { - EventHandler clientConnected = ClientConnected; - if (clientConnected != null) - { - var args = new ConnectArgs(clientId, connection, remoteAddress); - clientConnected(this, args); - } - } - - protected virtual void OnClientDisconnected(object sender, DisconnectedArgs args) - { - lock (clientSync) - { - // remove channel from our internal list - for (int i = 0; i < _connectionList.Count; i++) - { - if (_connectionList.ContainsKey(args.ClientId)) - { - _connectionList.Remove(args.ClientId); - break; - } - } - - EventHandler handler = ClientDisconnected; - if (handler != null) - handler(this, args); - } - - } - - private void DisconnectAllClients() - { - //lock (clientSync) - { - try - { - foreach (Guid key in _connectionList.Keys) - { - _connectionList[key].Transport.Disconnect(true); - //OnClientDisconnected(this, key); - } - - //_connectionList.Clear(); - } - catch (Exception ex) - { - Log.ErrorFormat("Error: {0}", ex.Message); - } - } - } - - private void ServerMain() - { - listener.Start(); - - while (!IsStopped) - { - try - { - INetworkTransport client = listener.AcceptClient(); - - if (client != null) - { - - //DHParametersGenerator generator = new DHParametersGenerator(); - //generator.Init(256, 30, new SecureRandom()); - //var sharedParameters = generator.GenerateParameters(); - - //IAsymmetricCipherKeyPairGenerator keyGen = GeneratorUtilities.GetKeyPairGenerator("DH"); - //keyGen.Init(new DHKeyGenerationParameters(new SecureRandom(), sharedParameters)); - - //var keyPair = keyGen.GenerateKeyPair(); - - ClientConnection channel = ClientConnection.CreateClientConnection( - new PlainEnvelope(), - client); - - channel.ClientId = Guid.NewGuid(); - - Log.Info("New connection from : " + client.RemoteEndPoint); - - lock (clientSync) - { - _connectionList.Add(channel.ClientId, channel); - } - - OnClientConnected(channel.ClientId, channel, client.RemoteEndPoint.ToString()); - - channel.ClientClosed += OnClientDisconnected; - channel.MessageReceived += OnMessageReceived; - } - } - catch (SocketException) - { - // This is here because AcceptTcpClient throws an exception when we tell it - // stop listening. - Log.Debug("SocketServer shutdown. No longer accepting connections"); - } - } - - //var port = (int) threadParam; - - //listener = new TcpListener(port); - - //var localEndPoint = new IPEndPoint(IPAddress.Any, port); - //_listenSocket.Bind(localEndPoint); - //_listenSocket.Listen(30); - - //_listenSocket.BeginAccept(OnBeginAccept, null); - - //var pollThread = new Thread(Poll); - //pollThread.Start(); - } - - protected void OnMessageReceived(object sender, MessageEventArgs args) - { - EventHandler function = MessageReceived; - if (function != null) - { - function(sender, args); - } - } - - //private void OnBeginAccept(IAsyncResult result) - //{ - // if (result.IsCompleted) - // { - // Socket socket = null; - - // try - // { - // socket = _listenSocket.EndAccept(result); - // } - // catch (Exception ex) - // { - // Log.ErrorFormat("Error: {0}", ex.Message); - // } - - // _listenSocket.BeginAccept(OnBeginAccept, null); - - // if (socket != null) - // { - // Guid clientId = Guid.NewGuid(); - // var client = new ZipSocket(socket); - - // ClientConnection connection = ClientConnection.CreateClientConnection(new EncryptedMessageEnvelope(), new ZipSocket(socket)); - // OnClientConnected(clientId, connection, ((IPEndPoint) socket.RemoteEndPoint).Address.ToString()); - // AddConnection(clientId, connection); - // } - // } - // else - // { - // _listenSocket.BeginAccept(OnBeginAccept, null); - // } - //} - - /// - /// Retrieves the guid (clientId) associated with this socket - /// - /// - /// - /// - //private ClientConnection FindClientBySocket(Socket socket, out Guid clientId) - //{ - // //clientId = Guid.Empty; - - // //lock (clientSync) - // //{ - // // try - // // { - // // IEnumerable> query = from li in _connectionList - // // where li.Value.Transport. == socket - // // select li; - - // // KeyValuePair kvp = query.FirstOrDefault(); - // // clientId = kvp.Key; - // // return kvp.Value; - // // } - // // catch (Exception ex) - // // { - // // Log.ErrorFormat("Error: {0}", ex.Message); - // // return null; - // // } - // //} - - // return null; - //} - - //private void Poll() - //{ - // while (!_stopEvent.WaitOne(20)) - // { - // IList readList = BuildSocketList(); - // if (readList.Count > 0) - // { - // Socket.Select(readList, null, null, 0); - // ProcessSelectedSockets(readList); - // } - // } - - // //_listenSocket.Shutdown(SocketShutdown.Both); - // listener.Stop(); - // //_listenSocket.Close(); - - // IsStopped = true; - //} - - //private void ProcessSelectedSockets(IList readList) - //{ - // foreach (object listObject in readList) - // { - // var socket = listObject as Socket; - // if (socket != null && !IsStopped) - // { - // Guid clientId; - // ClientConnection client = FindClientBySocket(socket, out clientId); - // if (client != null) - // { - // if (socket.Connected) - // { - // int availableBytes = socket.Available; - - // if (availableBytes > 0) - // { - // var data = new byte[availableBytes]; - // socket.Receive(data); - // //OnDataRecieved(clientId, data); - // } - // else - // { - // DisconnectClient(clientId); - // } - // } - // else - // { - // //log.Debug(string.Format("SocketServer.ProcessReadList => Zombie socket, client id {0}", FindClientIdForSocket(socket)) ); - // DisconnectClient(clientId); - // } - // } - // } - // } - //} - - //private List BuildSocketList() - //{ - // var clientList = new List(); - - // Socket[] socketArray = null; - - // lock (clientSync) - // { - // try - // { - // socketArray = new Socket[_connectionList.Count]; - - // IEnumerable q = from nvp in _connectionList - // select nvp.Value.ClientSocket.RawSocket; - - // q.ToArray().CopyTo(socketArray, 0); - // } - // catch (Exception ex) - // { - // Log.ErrorFormat("Error: {0}", ex.Message); - // } - // } - - // if (socketArray != null) - // { - // clientList.AddRange(socketArray); - // } - - // return clientList; - //} - - //private void AddConnection(Guid clientId, ClientConnection clientConnection) - //{ - // lock (clientSync) - // { - // try - // { - // _connectionList.Add(clientId, clientConnection); - // } - // catch (Exception ex) - // { - // Log.ErrorFormat("Error: {0}", ex.Message); - // } - // } - //} - } -} \ No newline at end of file diff --git a/TestServer/Addressbook.cs b/TestServer/Addressbook.cs new file mode 100644 index 0000000..7312c24 --- /dev/null +++ b/TestServer/Addressbook.cs @@ -0,0 +1,1156 @@ +// Generated by ProtoGen, Version=2.4.1.473, Culture=neutral, PublicKeyToken=55f7125234beb589. DO NOT EDIT! +#pragma warning disable 1591, 0612 +#region Designer generated code + +using pb = global::Google.ProtocolBuffers; +using pbc = global::Google.ProtocolBuffers.Collections; +using pbd = global::Google.ProtocolBuffers.Descriptors; +using scg = global::System.Collections.Generic; +namespace tutorial { + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public static partial class Addressbook { + + #region Extension registration + public static void RegisterAllExtensions(pb::ExtensionRegistry registry) { + } + #endregion + #region Static variables + internal static pbd::MessageDescriptor internal__static_tutorial_Person__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_tutorial_Person__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_tutorial_Person_PhoneNumber__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_tutorial_AddressBook__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_tutorial_AddressBook__FieldAccessorTable; + #endregion + #region Descriptor + public static pbd::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbd::FileDescriptor descriptor; + + static Addressbook() { + byte[] descriptorData = global::System.Convert.FromBase64String( + "ChFhZGRyZXNzYm9vay5wcm90bxIIdHV0b3JpYWwi2gEKBlBlcnNvbhIMCgRu" + + "YW1lGAEgAigJEgoKAmlkGAIgAigFEg0KBWVtYWlsGAMgASgJEisKBXBob25l" + + "GAQgAygLMhwudHV0b3JpYWwuUGVyc29uLlBob25lTnVtYmVyGk0KC1Bob25l" + + "TnVtYmVyEg4KBm51bWJlchgBIAIoCRIuCgR0eXBlGAIgASgOMhoudHV0b3Jp" + + "YWwuUGVyc29uLlBob25lVHlwZToESE9NRSIrCglQaG9uZVR5cGUSCgoGTU9C" + + "SUxFEAASCAoESE9NRRABEggKBFdPUksQAiIvCgtBZGRyZXNzQm9vaxIgCgZw" + + "ZXJzb24YASADKAsyEC50dXRvcmlhbC5QZXJzb25CKQoUY29tLmV4YW1wbGUu" + + "dHV0b3JpYWxCEUFkZHJlc3NCb29rUHJvdG9z"); + pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { + descriptor = root; + internal__static_tutorial_Person__Descriptor = Descriptor.MessageTypes[0]; + internal__static_tutorial_Person__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_tutorial_Person__Descriptor, + new string[] { "Name", "Id", "Email", "Phone", }); + internal__static_tutorial_Person_PhoneNumber__Descriptor = internal__static_tutorial_Person__Descriptor.NestedTypes[0]; + internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_tutorial_Person_PhoneNumber__Descriptor, + new string[] { "Number", "Type", }); + internal__static_tutorial_AddressBook__Descriptor = Descriptor.MessageTypes[1]; + internal__static_tutorial_AddressBook__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_tutorial_AddressBook__Descriptor, + new string[] { "Person", }); + return null; + }; + pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData, + new pbd::FileDescriptor[] { + }, assigner); + } + #endregion + + } + #region Messages + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Person : pb::GeneratedMessage { + private Person() { } + private static readonly Person defaultInstance = new Person().MakeReadOnly(); + private static readonly string[] _personFieldNames = new string[] { "email", "id", "name", "phone" }; + private static readonly uint[] _personFieldTags = new uint[] { 26, 16, 10, 34 }; + public static Person DefaultInstance { + get { return defaultInstance; } + } + + public override Person DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override Person ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::tutorial.Addressbook.internal__static_tutorial_Person__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::tutorial.Addressbook.internal__static_tutorial_Person__FieldAccessorTable; } + } + + #region Nested types + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public static class Types { + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public enum PhoneType { + MOBILE = 0, + HOME = 1, + WORK = 2, + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class PhoneNumber : pb::GeneratedMessage { + private PhoneNumber() { } + private static readonly PhoneNumber defaultInstance = new PhoneNumber().MakeReadOnly(); + private static readonly string[] _phoneNumberFieldNames = new string[] { "number", "type" }; + private static readonly uint[] _phoneNumberFieldTags = new uint[] { 10, 16 }; + public static PhoneNumber DefaultInstance { + get { return defaultInstance; } + } + + public override PhoneNumber DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override PhoneNumber ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::tutorial.Addressbook.internal__static_tutorial_Person_PhoneNumber__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::tutorial.Addressbook.internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable; } + } + + public const int NumberFieldNumber = 1; + private bool hasNumber; + private string number_ = ""; + public bool HasNumber { + get { return hasNumber; } + } + public string Number { + get { return number_; } + } + + public const int TypeFieldNumber = 2; + private bool hasType; + private global::tutorial.Person.Types.PhoneType type_ = global::tutorial.Person.Types.PhoneType.HOME; + public bool HasType { + get { return hasType; } + } + public global::tutorial.Person.Types.PhoneType Type { + get { return type_; } + } + + public override bool IsInitialized { + get { + if (!hasNumber) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _phoneNumberFieldNames; + if (hasNumber) { + output.WriteString(1, field_names[0], Number); + } + if (hasType) { + output.WriteEnum(2, field_names[1], (int) Type, Type); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasNumber) { + size += pb::CodedOutputStream.ComputeStringSize(1, Number); + } + if (hasType) { + size += pb::CodedOutputStream.ComputeEnumSize(2, (int) Type); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static PhoneNumber ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static PhoneNumber ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static PhoneNumber ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static PhoneNumber ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static PhoneNumber ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static PhoneNumber ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static PhoneNumber ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static PhoneNumber ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static PhoneNumber ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static PhoneNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private PhoneNumber MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(PhoneNumber prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(PhoneNumber cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private PhoneNumber result; + + private PhoneNumber PrepareBuilder() { + if (resultIsReadOnly) { + PhoneNumber original = result; + result = new PhoneNumber(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override PhoneNumber MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::tutorial.Person.Types.PhoneNumber.Descriptor; } + } + + public override PhoneNumber DefaultInstanceForType { + get { return global::tutorial.Person.Types.PhoneNumber.DefaultInstance; } + } + + public override PhoneNumber BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is PhoneNumber) { + return MergeFrom((PhoneNumber) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(PhoneNumber other) { + if (other == global::tutorial.Person.Types.PhoneNumber.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasNumber) { + Number = other.Number; + } + if (other.HasType) { + Type = other.Type; + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_phoneNumberFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _phoneNumberFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 10: { + result.hasNumber = input.ReadString(ref result.number_); + break; + } + case 16: { + object unknown; + if(input.ReadEnum(ref result.type_, out unknown)) { + result.hasType = true; + } else if(unknown is int) { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + unknownFields.MergeVarintField(2, (ulong)(int)unknown); + } + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasNumber { + get { return result.hasNumber; } + } + public string Number { + get { return result.Number; } + set { SetNumber(value); } + } + public Builder SetNumber(string value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasNumber = true; + result.number_ = value; + return this; + } + public Builder ClearNumber() { + PrepareBuilder(); + result.hasNumber = false; + result.number_ = ""; + return this; + } + + public bool HasType { + get { return result.hasType; } + } + public global::tutorial.Person.Types.PhoneType Type { + get { return result.Type; } + set { SetType(value); } + } + public Builder SetType(global::tutorial.Person.Types.PhoneType value) { + PrepareBuilder(); + result.hasType = true; + result.type_ = value; + return this; + } + public Builder ClearType() { + PrepareBuilder(); + result.hasType = false; + result.type_ = global::tutorial.Person.Types.PhoneType.HOME; + return this; + } + } + static PhoneNumber() { + object.ReferenceEquals(global::tutorial.Addressbook.Descriptor, null); + } + } + + } + #endregion + + public const int NameFieldNumber = 1; + private bool hasName; + private string name_ = ""; + public bool HasName { + get { return hasName; } + } + public string Name { + get { return name_; } + } + + public const int IdFieldNumber = 2; + private bool hasId; + private int id_; + public bool HasId { + get { return hasId; } + } + public int Id { + get { return id_; } + } + + public const int EmailFieldNumber = 3; + private bool hasEmail; + private string email_ = ""; + public bool HasEmail { + get { return hasEmail; } + } + public string Email { + get { return email_; } + } + + public const int PhoneFieldNumber = 4; + private pbc::PopsicleList phone_ = new pbc::PopsicleList(); + public scg::IList PhoneList { + get { return phone_; } + } + public int PhoneCount { + get { return phone_.Count; } + } + public global::tutorial.Person.Types.PhoneNumber GetPhone(int index) { + return phone_[index]; + } + + public override bool IsInitialized { + get { + if (!hasName) return false; + if (!hasId) return false; + foreach (global::tutorial.Person.Types.PhoneNumber element in PhoneList) { + if (!element.IsInitialized) return false; + } + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _personFieldNames; + if (hasName) { + output.WriteString(1, field_names[2], Name); + } + if (hasId) { + output.WriteInt32(2, field_names[1], Id); + } + if (hasEmail) { + output.WriteString(3, field_names[0], Email); + } + if (phone_.Count > 0) { + output.WriteMessageArray(4, field_names[3], phone_); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasName) { + size += pb::CodedOutputStream.ComputeStringSize(1, Name); + } + if (hasId) { + size += pb::CodedOutputStream.ComputeInt32Size(2, Id); + } + if (hasEmail) { + size += pb::CodedOutputStream.ComputeStringSize(3, Email); + } + foreach (global::tutorial.Person.Types.PhoneNumber element in PhoneList) { + size += pb::CodedOutputStream.ComputeMessageSize(4, element); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static Person ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static Person ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static Person ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static Person ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static Person ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static Person ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static Person ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static Person ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static Person ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static Person ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private Person MakeReadOnly() { + phone_.MakeReadOnly(); + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(Person prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(Person cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private Person result; + + private Person PrepareBuilder() { + if (resultIsReadOnly) { + Person original = result; + result = new Person(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override Person MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::tutorial.Person.Descriptor; } + } + + public override Person DefaultInstanceForType { + get { return global::tutorial.Person.DefaultInstance; } + } + + public override Person BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is Person) { + return MergeFrom((Person) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(Person other) { + if (other == global::tutorial.Person.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasName) { + Name = other.Name; + } + if (other.HasId) { + Id = other.Id; + } + if (other.HasEmail) { + Email = other.Email; + } + if (other.phone_.Count != 0) { + result.phone_.Add(other.phone_); + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_personFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _personFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 10: { + result.hasName = input.ReadString(ref result.name_); + break; + } + case 16: { + result.hasId = input.ReadInt32(ref result.id_); + break; + } + case 26: { + result.hasEmail = input.ReadString(ref result.email_); + break; + } + case 34: { + input.ReadMessageArray(tag, field_name, result.phone_, global::tutorial.Person.Types.PhoneNumber.DefaultInstance, extensionRegistry); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasName { + get { return result.hasName; } + } + public string Name { + get { return result.Name; } + set { SetName(value); } + } + public Builder SetName(string value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasName = true; + result.name_ = value; + return this; + } + public Builder ClearName() { + PrepareBuilder(); + result.hasName = false; + result.name_ = ""; + return this; + } + + public bool HasId { + get { return result.hasId; } + } + public int Id { + get { return result.Id; } + set { SetId(value); } + } + public Builder SetId(int value) { + PrepareBuilder(); + result.hasId = true; + result.id_ = value; + return this; + } + public Builder ClearId() { + PrepareBuilder(); + result.hasId = false; + result.id_ = 0; + return this; + } + + public bool HasEmail { + get { return result.hasEmail; } + } + public string Email { + get { return result.Email; } + set { SetEmail(value); } + } + public Builder SetEmail(string value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasEmail = true; + result.email_ = value; + return this; + } + public Builder ClearEmail() { + PrepareBuilder(); + result.hasEmail = false; + result.email_ = ""; + return this; + } + + public pbc::IPopsicleList PhoneList { + get { return PrepareBuilder().phone_; } + } + public int PhoneCount { + get { return result.PhoneCount; } + } + public global::tutorial.Person.Types.PhoneNumber GetPhone(int index) { + return result.GetPhone(index); + } + public Builder SetPhone(int index, global::tutorial.Person.Types.PhoneNumber value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.phone_[index] = value; + return this; + } + public Builder SetPhone(int index, global::tutorial.Person.Types.PhoneNumber.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.phone_[index] = builderForValue.Build(); + return this; + } + public Builder AddPhone(global::tutorial.Person.Types.PhoneNumber value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.phone_.Add(value); + return this; + } + public Builder AddPhone(global::tutorial.Person.Types.PhoneNumber.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.phone_.Add(builderForValue.Build()); + return this; + } + public Builder AddRangePhone(scg::IEnumerable values) { + PrepareBuilder(); + result.phone_.Add(values); + return this; + } + public Builder ClearPhone() { + PrepareBuilder(); + result.phone_.Clear(); + return this; + } + } + static Person() { + object.ReferenceEquals(global::tutorial.Addressbook.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class AddressBook : pb::GeneratedMessage { + private AddressBook() { } + private static readonly AddressBook defaultInstance = new AddressBook().MakeReadOnly(); + private static readonly string[] _addressBookFieldNames = new string[] { "person" }; + private static readonly uint[] _addressBookFieldTags = new uint[] { 10 }; + public static AddressBook DefaultInstance { + get { return defaultInstance; } + } + + public override AddressBook DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override AddressBook ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::tutorial.Addressbook.internal__static_tutorial_AddressBook__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::tutorial.Addressbook.internal__static_tutorial_AddressBook__FieldAccessorTable; } + } + + public const int PersonFieldNumber = 1; + private pbc::PopsicleList person_ = new pbc::PopsicleList(); + public scg::IList PersonList { + get { return person_; } + } + public int PersonCount { + get { return person_.Count; } + } + public global::tutorial.Person GetPerson(int index) { + return person_[index]; + } + + public override bool IsInitialized { + get { + foreach (global::tutorial.Person element in PersonList) { + if (!element.IsInitialized) return false; + } + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _addressBookFieldNames; + if (person_.Count > 0) { + output.WriteMessageArray(1, field_names[0], person_); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + foreach (global::tutorial.Person element in PersonList) { + size += pb::CodedOutputStream.ComputeMessageSize(1, element); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static AddressBook ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static AddressBook ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static AddressBook ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static AddressBook ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static AddressBook ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static AddressBook ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static AddressBook ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static AddressBook ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static AddressBook ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static AddressBook ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private AddressBook MakeReadOnly() { + person_.MakeReadOnly(); + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(AddressBook prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(AddressBook cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private AddressBook result; + + private AddressBook PrepareBuilder() { + if (resultIsReadOnly) { + AddressBook original = result; + result = new AddressBook(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override AddressBook MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::tutorial.AddressBook.Descriptor; } + } + + public override AddressBook DefaultInstanceForType { + get { return global::tutorial.AddressBook.DefaultInstance; } + } + + public override AddressBook BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is AddressBook) { + return MergeFrom((AddressBook) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(AddressBook other) { + if (other == global::tutorial.AddressBook.DefaultInstance) return this; + PrepareBuilder(); + if (other.person_.Count != 0) { + result.person_.Add(other.person_); + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_addressBookFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _addressBookFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 10: { + input.ReadMessageArray(tag, field_name, result.person_, global::tutorial.Person.DefaultInstance, extensionRegistry); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public pbc::IPopsicleList PersonList { + get { return PrepareBuilder().person_; } + } + public int PersonCount { + get { return result.PersonCount; } + } + public global::tutorial.Person GetPerson(int index) { + return result.GetPerson(index); + } + public Builder SetPerson(int index, global::tutorial.Person value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.person_[index] = value; + return this; + } + public Builder SetPerson(int index, global::tutorial.Person.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.person_[index] = builderForValue.Build(); + return this; + } + public Builder AddPerson(global::tutorial.Person value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.person_.Add(value); + return this; + } + public Builder AddPerson(global::tutorial.Person.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.person_.Add(builderForValue.Build()); + return this; + } + public Builder AddRangePerson(scg::IEnumerable values) { + PrepareBuilder(); + result.person_.Add(values); + return this; + } + public Builder ClearPerson() { + PrepareBuilder(); + result.person_.Clear(); + return this; + } + } + static AddressBook() { + object.ReferenceEquals(global::tutorial.Addressbook.Descriptor, null); + } + } + + #endregion + +} + +#endregion Designer generated code diff --git a/TestServer/Program.cs b/TestServer/Program.cs index f26bc1f..592d9a3 100644 --- a/TestServer/Program.cs +++ b/TestServer/Program.cs @@ -7,11 +7,11 @@ using log4net; using System.Collections; using TestServer.Configuration; -using TestServer.Reflection; using log4net.Config; using log4net.Core; -using TestServer.Network; -using TestServer.Messaging; +using SocketServer.Shared.Network; +using SocketServer.Shared.Messaging; +using SocketServer.Shared.Reflection; namespace TestServer { @@ -57,7 +57,7 @@ var config Type t = ReflectionHelper.FindType(messageConfiguration.TypeName); if (t != null) { - MessageFactory.Register(messageConfiguration.Name, t); + // MessageFactory.Register(messageConfiguration.Name, t); } else { @@ -109,14 +109,16 @@ protected void ServerThread() while (!stopEvent.WaitOne(100)) { - INetworkTransport transport = listener.AcceptClient(0); + INetworkTransport transport = listener.AcceptClient(); if (transport != null) { // let's wrap this with a client connection - ClientConnection connection = new ClientConnection(transport); + ClientConnection connection = ClientConnection.CreateClientConnection(new PlainEnvelope(), transport); // start pumping messages on this connection - connection.StartMessagePump(); + //connection.StartMessagePump(); + + connection.MessageReceived += new EventHandler(connection_MessageReceived); // add to client list AddClient(connection); @@ -126,31 +128,35 @@ protected void ServerThread() listener.Stop(); } - protected void AddClient(ClientConnection connection) + void connection_MessageReceived(object sender, MessageEventArgs e) { - lock (connectionListLock) - { - connectionList.Add(connection); - } } - private List BuildSocketList() + protected void AddClient(ClientConnection connection) { - var clientList = new List(); - lock (connectionListLock) { - try - { - clientList = connectionList.Select(c => c.Transport.Client).ToList(); - } - catch (Exception ex) - { - Logger.ErrorFormat("Error: {0}", ex.Message); - } + connectionList.Add(connection); } - - return clientList; } + + //private List BuildSocketList() + //{ + // var clientList = new List(); + + // lock (connectionListLock) + // { + // try + // { + // clientList = connectionList.Select(c => c.Transport.Client).ToList(); + // } + // catch (Exception ex) + // { + // Logger.ErrorFormat("Error: {0}", ex.Message); + // } + // } + + // return clientList; + //} } } diff --git a/TestServer/TestMessageOne.cs b/TestServer/TestMessageOne.cs index 812ec14..605c774 100644 --- a/TestServer/TestMessageOne.cs +++ b/TestServer/TestMessageOne.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using TestServer.Messaging; +using SocketServer.Shared.Messaging; namespace TestServer { - public class TestMessageOne : IMessage + public class TestMessageOne : IValidatedMessage { public string MessageID { diff --git a/TestServer/TestMessageTwo.cs b/TestServer/TestMessageTwo.cs index ddf8514..ff11a2b 100644 --- a/TestServer/TestMessageTwo.cs +++ b/TestServer/TestMessageTwo.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using TestServer.Messaging; +using SocketServer.Shared.Messaging; namespace TestServer { - public class TestMessageTwo : IMessage + public class TestMessageTwo : IValidatedMessage { public string MessageID { diff --git a/TestServer/TestServer.csproj b/TestServer/TestServer.csproj index 1512590..a39c7db 100644 --- a/TestServer/TestServer.csproj +++ b/TestServer/TestServer.csproj @@ -35,6 +35,12 @@ 4 + + E:\dev\Libraries\protobuf\csharp\Debug\v4.0\Google.ProtocolBuffers.dll + + + E:\dev\Libraries\protobuf\csharp\Debug\v4.0\Google.ProtocolBuffers.Serialization.dll + ..\References\log4net.dll @@ -49,11 +55,10 @@ + Code - - @@ -62,32 +67,19 @@ - - - - - - - - - - - - - - - - + + Always + diff --git a/TestServer/addressbook.desc b/TestServer/addressbook.desc new file mode 100644 index 0000000..b4ee9f7 Binary files /dev/null and b/TestServer/addressbook.desc differ