/// <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(); }
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."); } }
/// <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; }