/// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="acceptor">acceptor object</param>
 /// <param name="callBackObj">callback object</param>
 /// <param name="port">port</param>
 /// <param name="receiveType">receive type</param>
 /// <param name="noDelay">noDelay falg</param>
 public ParallelServerOps(IParallelServerAcceptor acceptor, String port, IParallelServerCallback callBackObj = null, IParallelRoomCallback roomCallBackObj = null, ReceiveType receiveType = ReceiveType.SEQUENTIAL, int socketCount = SocketCount.Infinite, int streamCountPerSocket = SocketCount.Infinite)
 {
     this.Port = port;
     this.Acceptor = acceptor;
     this.CallBackObj = callBackObj;
     this.RoomCallBackObj = roomCallBackObj;
     this.ReceiveType = receiveType;
     MaxSocketCount = socketCount;
     MaxStreamCountPerSocket = streamCountPerSocket;
 }
        /// <summary>
        /// Start the server and start accepting the client
        /// </summary>
        protected override void execute()
        {
            StartStatus status = StartStatus.FAIL_SOCKET_ERROR;
            try
            {
                lock (m_generalLock)
                {
                    if (IsServerStarted)
                    {
                        status = StartStatus.FAIL_ALREADY_STARTED;
                        throw new CallbackException();
                    }

                    CallBackObj = m_serverOps.CallBackObj;
                    Port = m_serverOps.Port;
                    ReceiveType = m_serverOps.ReceiveType;

                    if (Port == null || Port.Length == 0)
                    {
                        Port = ServerConf.DEFAULT_PORT;
                    }
                    m_socketMap.Clear();
                    ServerOps listenerOps = new ServerOps(this, m_serverOps.Port,true);
                    m_listener.StartServer(listenerOps);
                }

            }
            catch (CallbackException)
            {
                CallBackObj.OnServerStarted(this, status);
                return;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + " >" + ex.StackTrace);
                if (m_listener != null)
                    m_listener.StopServer();
                m_listener = null;
                CallBackObj.OnServerStarted(this, StartStatus.FAIL_SOCKET_ERROR);
                return;
            }
            CallBackObj.OnServerStarted(this, StartStatus.SUCCESS);
        }
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="callBackObj">callback object</param>
 /// <param name="port">port</param>
 /// <param name="receiveType">receive type</param>
 /// <param name="noDelay">noDelay falg</param>
 public ParallelServerOps(IParallelServerCallback callBackObj, String port,ReceiveType receiveType)
 {
     this.Port = port;
     this.CallBackObj = callBackObj;
     this.ReceiveType = receiveType;
 }