示例#1
0
 /// <summary>
 /// Stops this virtualized service. When used as Virtual Server, it will release all services descriptions and network resources like TCP Port.
 /// When the service is stopped, the virtual server will not reply anymore.
 /// </summary>
 public override void Stop()
 {
     if (sersock != null)
     {
         sersock.Stop();
         sersock = null;
     }
     IsRunning = false;
     EmiService.Stop();
 }
示例#2
0
        void InternalSendRequest(RequestData requestData)
        {
            AbstractMetadata requestMetadata = requestData.Metadata;
            object           requestObject   = requestData.Data;
            Message          message         = requestData.ReferencedMessage;

            message.Direction = MessageDirection.Outgoing;
            message.Status    = MessageStatus.Pending;
            EmiMessage mm = null;

            if (requestMetadata == MOMetadata)
            {
                SmsMo  request   = (SmsMo)requestObject;
                string messagemo = EmiProtocol.CreateMO(request.Sender, request.Receiver, request.MessageText, new DateTimeOffset(DateTime.Now), request.MessageFormat, MT.AlphaNumeric);
                mm = new EmiMessage
                {
                    CreateDate      = new DateTimeOffset(DateTime.Now),
                    Direction       = 0,
                    RAWMessage      = messagemo,
                    FriendlyMessage = $"SMS MO: {request.Sender} -> {request.Receiver} : {request.MessageText} ({request.MessageText.Length } chars)",
                    Type            = EmiMessageType.MO,
                    Message         = message
                };
                message.Title       = mm.FriendlyMessage;
                message.RequestText = mm.RAWMessage;
            }
            else if (requestMetadata == SRMetadata)
            {
                SmsSr  request   = (SmsSr)requestObject;
                string messagemo = EmiProtocol.CreateSR(request.OAdC, request.AdC, request.SCTS, request.Dst.ToString(), request.Rsn.ToString(), request.Text);
                mm = new EmiMessage
                {
                    CreateDate      = new DateTimeOffset(DateTime.Now),
                    Direction       = 0,
                    RAWMessage      = messagemo,
                    FriendlyMessage = $"SMS SR: {request.OAdC} -> {request.AdC} : {request.Text} ({request.Text.Length} chars)",
                    Type            = EmiMessageType.SR,
                    Message         = message
                };
                message.Title       = mm.FriendlyMessage;
                message.RequestText = mm.RAWMessage;
            }

            if (EmiService.Buffers.Count > 0)
            {
                EmiService.SendMOSRACK(mm, null);
            }
            else
            {
                message.Status       = MessageStatus.Failed;
                message.ErrorMessage = "You must have an active SMS Connection before sending SMS MO Messages.";
                throw new InvalidOperationException("You must have an active SMS Connection before sending SMS MO Messages.");
            }
        }
示例#3
0
        /// <summary>
        /// Starts the virtualized service. When used as Virtual Server, the service will registers TCP port and services descriptions.
        /// </summary>
        public override void Start()
        {
            Emiservice = new EmiService(this);
            sersock    = new SocketServer(CallbackThreadType.ctIOThread, Emiservice);
            System.Net.IPEndPoint endpoint;
            if (localIp == "*")
            {
                endpoint = new System.Net.IPEndPoint(System.Net.IPAddress.Any, port);
            }
            else
            {
                endpoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse(localIp), port);
            }
            SocketListener sl = sersock.AddListener("EMI", endpoint);

            sl.Start();
            IsRunning = true;
        }