public ConnectionAddresses(Transports transport, IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, int connectionId)
		{
			Transport = transport;
			LocalEndPoint = localEndPoint;
			RemoteEndPoint = remoteEndPoint;
			ConnectionId = connectionId;
		}
示例#2
0
		public IncomingMessage(Transports transport, IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, int connectionId, SipMessageReader reader, ArraySegment<byte> readerData, ArraySegment<byte> contentData)
		{
			ConnectionAddresses = new ConnectionAddresses(transport, localEndPoint, remoteEndPoint, connectionId);

			Reader = reader;
			Header = readerData;
			Content = contentData;
		}
示例#3
0
 public static void Main(string[] args)
 {
     var perfTests = new PerformanceTests();
     var transportTest = new Transports();
      transportTest.custom_transport_test();
     // transportTest.zmq_transport_test();
     //  perfTests.should_send_messages();
 }
示例#4
0
        public ReceiverApp()
        {
            Handlers.DisableConventionalDiscovery();
            Handlers.IncludeType <TraceHandler>();

            Settings.ConfigureMarten(_ =>
            {
                _.Connection(Servers.PostgresConnectionString);
                _.DatabaseSchemaName = "receiver";
            });

            Include <MartenBackedPersistence>();

            Transports.ListenForMessagesFrom(Listener);
        }
示例#5
0
        public int AddVehicleInOperationInfo(Transports transport)
        {
            dbtransport = new DBTransport();
            int Result = 0;

            try
            {
                Result = dbtransport.AddVehicleInOperationInfo(transport);
                return(Result);
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#6
0
        public BusRegistry()
        {
            var uri = "durable://localhost:2110/servicebus_example";

            Transports.ListenForMessagesFrom(uri);

            Logging.UseConsoleLogging = true;

            Settings.Alter <DiagnosticsSettings>(_ =>
            {
                _.WebsocketPort = 3300;
            });

            Features.Include <DiagnosticsFeature>();
        }
示例#7
0
        public int AddVehicleInsuanceDetailsInfo(Transports transport)
        {
            dbtransport = new DBTransport();
            int Result = 0;

            try
            {
                Result = dbtransport.AddVehicleInsuanceDetailsInfo(transport);
                return(Result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#8
0
 /// <summary>
 /// Gets the highest weighted available transport for this peer
 /// </summary>
 public IPeerTransport GetTransport()
 {
     if (Transports == null || Transports.Count == 0)
     {
         throw new NullReferenceException("No transports on peer: " + this.ComputedHash.ToString());
     }
     else if (Transports.Count == 1)
     {
         return(Transports.First());
     }
     else
     {
         return((from t in Transports where t.Ready orderby t.Weight select t).FirstOrDefault());
     }
 }
示例#9
0
        public int AddTransportModelInfo(Transports transport)
        {
            dbtransport = new DBTransport();
            int Result = 0;

            try
            {
                Result = dbtransport.AddTransportModelInfo(transport);
                return(Result);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public OutboxSender(MessageTracker tracker)
        {
            Handlers.DisableConventionalDiscovery().IncludeType <CascadeReceiver>();
            Services.AddSingleton(tracker);
            Publish.Message <TriggerMessage>().To("durable://localhost:2337");
            Transports.DurableListenerAt(2338);

            Settings.ConfigureMarten(marten =>
            {
                marten.Connection(ConnectionSource.ConnectionString);
                marten.DatabaseSchemaName = "outbox_sender";
            });

            Include <MartenBackedPersistence>();
        }
        public MyAppWithSettings()
        {
            Configuration
            .AddEnvironmentVariables()
            .AddJsonFile("appSettings.json");

            Settings.With <MySettings>(_ =>
            {
                Transports.Lightweight
                .ListenOnPort(_.LightweightPort)
                .MaximumSendAttempts(_.MaximumSendAttempts);

                Transports.ListenForMessagesFrom(_.DefaultListener);
            });
        }
示例#12
0
 public bool Is(IObject TransportStat)
 {
     if (TransportStat is TransportStat)
     {
         foreach (ETransport x in (TransportStat as TransportStat).Transports)
         {
             if (Transports.Contains(x) == false || (byte)HighestTransport < (byte)x)
             {
                 System.Windows.MessageBox.Show("Потрібно " + x.ToString());
                 return(false);
             }
         }
     }
     return(true);
 }
示例#13
0
        public ScheduledMessageApp()
        {
            Services.AddSingleton(Receiver);

            Publish.MessagesFromAssemblyContaining <ScheduledMessageApp>()
            .To("loopback://incoming");

            Transports.ListenForMessagesFrom("loopback://incoming");

            Handlers.Discovery(x =>
            {
                x.DisableConventionalDiscovery();
                x.IncludeType <ScheduledMessageCatcher>();
            });
        }
示例#14
0
        public RabbitMqUsingApp()
        {
            Settings.AddRabbitMqHost("localhost");

            HttpRoutes.DisableConventionalDiscovery();

            Transports.ListenForMessagesFrom("rabbitmq://localhost/queue/messages3");

            Services.AddSingleton <ColorHistory>();
            Services.AddSingleton <MessageTracker>();

            Publish.AllMessagesTo("rabbitmq://localhost/queue/messages3");

            Include <MessageTrackingExtension>();
        }
示例#15
0
        protected void btnClick_btnUpdateTypeID(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                transportdata         = new TransportData();
                transport             = new Transports();
                transport.trModelID   = string.IsNullOrEmpty(hfTypeID.Value) ? 0 : Convert.ToInt32(hfTypeID.Value);
                transport.trModelName = string.IsNullOrEmpty(txtModel.Text.ToString()) ? string.Empty : Convert.ToString(txtModel.Text);
                transport.CreatedBy   = GlobalInfo.Userid;
                if (dpIsActive.SelectedItem.Value == "1")
                {
                    transport.IsActive = true;
                }
                else if (dpIsActive.SelectedItem.Text == "2")
                {
                    transport.IsActive = false;
                }
                transport.Createddate  = DateTime.Now.ToString("dd-MM-yyyy");
                transport.ModifiedBy   = GlobalInfo.Userid;
                transport.ModifiedDate = DateTime.Now.ToString("dd-MM-yyyy");
                transport.flag         = "Update";
                int Result = 0;
                Result = transportdata.AddTransportModelInfo(transport);
                if (Result > 0)
                {
                    divDanger.Visible   = false;
                    divwarning.Visible  = false;
                    divSusccess.Visible = true;
                    lblSuccess.Text     = "Transport Model Updated  Successfully";

                    ClearTextBox();
                    BindTransportModelInfo();
                    pnlError.Update();
                    upMain.Update();
                    uprouteList.Update();
                    btnupdateroute.Visible = false;
                    btnAddRoute.Visible    = true;
                }
                else
                {
                    divDanger.Visible   = false;
                    divwarning.Visible  = true;
                    divSusccess.Visible = false;
                    lblwarning.Text     = "Please Contact to Site Admin";
                    pnlError.Update();
                }
            }
        }
示例#16
0
        public static UriSchemes ToScheme(this Transports transport)
        {
            switch (transport)
            {
            case Transports.Tcp:
            case Transports.Udp:
            case Transports.Sctp:
                return(UriSchemes.Sip);

            case Transports.Tls:
                return(UriSchemes.Sips);

            default:
                throw new ArgumentException("Can not convert Transports to UriSchemes: " + transport.ToString());
            }
        }
        public OrdersApp()
        {
            Include <MartenBackedPersistence>();

            // Whether or not our event is destined for a durable queue, it will be stored durably in the outbox because of the usage of an outbox when sending it.
            Publish.Message <OrderPlaced>().To("tcp://localhost:2345/durable");

            Transports.LightweightListenerAt(5432);

            Settings.Alter <StoreOptions>(_ =>
            {
                _.Connection(ConnectionSource.ConnectionString);
            });
            Handlers.DisableConventionalDiscovery();
            Handlers.IncludeType <OrderStatusHandler>();
        }
示例#18
0
        public void WriteContact(IPEndPoint endPoint, Transports transport, ByteArrayPart sipInstance)
        {
            WriteContact(ByteArrayPart.Invalid, endPoint, transport, sipInstance);

            //Write(C.Contact, C.HCOLON, C.SP, C.LAQUOT, C.sip, C.HCOLON);
            //Write(endPoint);
            //if (transport != Transports.None)
            //{
            //    Write(C.SEMI, C.transport, C.EQUAL);
            //    Write(transport.ToLowerUtf8Bytes());
            //}
            //Write(C.RAQUOT);
            //if (sipInstance.IsValid)
            //    Write(C.__sip_instance___, sipInstance, C.RAQUOT, C.DQUOTE);
            //Write(C.CRLF);
        }
示例#19
0
        public ItemSender()
        {
            Include <MartenBackedPersistence>();
            Publish.Message <ItemCreated>().To("tcp://localhost:2345/durable");
            Publish.Message <Question>().To("tcp://localhost:2345/durable");

            Settings.Alter <StoreOptions>(_ =>
            {
                _.Connection(Servers.PostgresConnectionString);
                _.DatabaseSchemaName = "sender";
            });

            Transports.LightweightListenerAt(2567);

            HttpRoutes.DisableConventionalDiscovery();
        }
示例#20
0
        public ReceiverApp()
        {
            Handlers.IncludeType <TraceHandler>();

            Settings.ConfigureMarten(_ =>
            {
                _.Connection(ConnectionSource.ConnectionString);
                _.DatabaseSchemaName = "receiver";
            });

            Include <MartenBackedPersistence>();

            Logging.UseConsoleLogging = true;

            Transports.ListenForMessagesFrom(Listener);
        }
示例#21
0
        public LightweightTransportApp()
        {
            // Set up a listener (this is optional)
            Transports.LightweightListenerAt(4000);

            // Or do the exact same thing by supplying a Uri
            Transports.ListenForMessagesFrom("tcp://localhost:4000");


            // Registering a subscription to Message1 that should be
            // delivered to a load balancer Uri at port 2200 and the "important"
            // queue
            Subscribe.To <Message1>().At("tcp://loadbalancer:2200/important");

            // Publish the message Message2 to the DNS entry "remoteserver"
            Publish.Message <Message2>().To("tcp://remoteserver:2201");
        }
        public ServiceControlEditViewModel(ServiceControlInstance instance)
        {
            DisplayName   = "EDIT SERVICECONTROL INSTANCE";
            SelectLogPath = new SelectPathCommand(p => LogPath = p, isFolderPicker: true, defaultPath: LogPath);

            InstanceName = instance.Name;
            Description  = instance.Description;

            var userAccount = UserAccount.ParseAccountName(instance.ServiceAccount);

            UseSystemAccount  = userAccount.IsLocalSystem();
            UseServiceAccount = userAccount.IsLocalService();

            UseProvidedAccount = !(UseServiceAccount || UseSystemAccount);

            if (UseProvidedAccount)
            {
                ServiceAccount = instance.ServiceAccount;
            }

            HostName   = instance.HostName;
            PortNumber = instance.Port.ToString();
            DatabaseMaintenancePortNumber         = instance.DatabaseMaintenancePort.ToString();
            DatabaseMaintenancePortNumberRequired = instance.Version.Major >= 2;

            LogPath = instance.LogPath;

            AuditForwardingQueueName = instance.AuditLogQueue;
            AuditQueueName           = instance.AuditQueue;
            AuditForwarding          = AuditForwardingOptions.FirstOrDefault(p => p.Value == instance.ForwardAuditMessages);
            ErrorForwarding          = ErrorForwardingOptions.FirstOrDefault(p => p.Value == instance.ForwardErrorMessages);

            UpdateErrorRetention(instance.ErrorRetentionPeriod);
            UpdateAuditRetention(instance.AuditRetentionPeriod);

            ErrorQueueName           = instance.ErrorQueue;
            ErrorForwardingQueueName = instance.ErrorLogQueue;
            SelectedTransport        = Transports.First(t => StringComparer.InvariantCultureIgnoreCase.Equals(t.Name, instance.TransportPackage));
            ConnectionString         = instance.ConnectionString;
            ServiceControlInstance   = instance;

            ErrorForwardingVisible = instance.Version >= SettingsList.ForwardErrorMessages.SupportedFrom;

            //Both Audit and Error Retention Property was introduced in same version
            RetentionPeriodsVisible = instance.Version >= SettingsList.ErrorRetentionPeriod.SupportedFrom;
        }
示例#23
0
        public RabbitMqUsingApp()
        {
            Hosting.ConfigureLogging(x =>
            {
                x.AddConsole();
                x.AddDebug();
            });

            Transports.ListenForMessagesFrom("rabbitmq://localhost:5672/messages3");

            Services.AddSingleton <ColorHistory>();
            Services.AddSingleton <MessageTracker>();

            Publish.AllMessagesTo("rabbitmq://localhost:5672/messages3");

            Include <MessageTrackingExtension>();
        }
        protected void btnClick_btnAddSchedule(object sender, EventArgs e)
        {
            transportdata             = new TransportData();
            transport                 = new Transports();
            transport.ID              = 0;
            transport.RouteID         = Convert.ToInt32(dpRoute.SelectedItem.Value);
            transport.scheduleOuttime = txtScheduleOutTime.Text;
            transport.scheduleIntime  = txtScheduleInTime.Text;

            transport.CreatedBy   = GlobalInfo.Userid;
            transport.IsActive    = true;
            transport.Createddate = DateTime.Now.ToString("dd-MM-yyyy");

            transport.flag = "Insert";
            int Result = 0;

            Result = transportdata.AddTransportScheduleInfo(transport);
            if (Result > 0)
            {
                divDanger.Visible   = false;
                divwarning.Visible  = false;
                divSusccess.Visible = true;
                lblSuccess.Text     = "Schedule  Added  Successfully";

                ClearTextBox();
                GetScheduleInfo();
                pnlError.Update();
                upMain.Update();
                uprouteList.Update();
            }
            else
            {
                divDanger.Visible   = false;
                divwarning.Visible  = true;
                divSusccess.Visible = false;
                if (Result == -2627)
                {
                    lblwarning.Text = "Data Already Exists";
                }
                else
                {
                    lblwarning.Text = "Please Contact to Site Admin";
                }
                pnlError.Update();
            }
        }
        public WarehouseApp()
        {
            Include <MartenBackedPersistence>();

            Settings.Alter <StoreOptions>(_ =>
            {
                _.Connection(ConnectionSource.ConnectionString);
            });

            //Note: whether or not our event is destined for a durable queue, it will be stored durably in the outbox because of the implementation of the handlers.
            Publish.Message <ItemOutOfStock>().To("tcp://localhost:5432/");

            Transports.DurableListenerAt(2345);

            Handlers.DisableConventionalDiscovery();
            Handlers.IncludeType <THandler>();
        }
示例#26
0
        public ItemReceiver()
        {
            Handlers.Worker("items").IsDurable()
            .HandlesMessage <ItemCreated>();

            Include <MartenBackedPersistence>();

            Settings.Alter <StoreOptions>(_ =>
            {
                _.Connection(ConnectionSource.ConnectionString);
                _.DatabaseSchemaName = "receiver";
            });

            Services.AddSingleton <MessageTracker>();

            Transports.DurableListenerAt(2345);
        }
示例#27
0
        public MyMessagingApp()
        {
            // Configure handler policies
            Handlers.DefaultMaximumAttempts = 3;
            Handlers.OnException <SqlException>().RetryLater(3.Seconds());

            // Declare published messages
            Publish.Message <Message1>().To("tcp://server1:2222");

            // Register to receive messages
            Subscribe.At("tcp://loadbalancer1:2233");
            Subscribe.To <Message2>();
            Subscribe.To(type => type.IsInNamespace("MyMessagingApp.Incoming"));

            // Configure the built in transports
            Transports.LightweightListenerAt(2233);
        }
示例#28
0
        protected void btnClick_btnUpdateJobCard(object sender, EventArgs e)
        {
            transportdata     = new TransportData();
            transport         = new Transports();
            transport.ID      = string.IsNullOrEmpty(hfJOBCardInfo.Value) ? 0 : Convert.ToInt32(hfJOBCardInfo.Value);
            transport.VOp     = Convert.ToInt32(txtVOpId.Text);
            transport.Brake   = txtBrake.Text;
            transport.Light   = txtLight.Text;
            transport.TyreCon = txtTyreCondition.Text;
            transport.damage  = txtDamages.Text;
            transport.other   = txtOthers.Text;

            transport.oillevel        = txtOilLevel.Text;
            transport.battery         = txtBattery.Text;
            transport.crownjointsound = txtCrownnandJointSound.Text;
            transport.clutchcon       = txtClutchCondition.Text;
            transport.stearingvobling = txtStearingVobling.Text;
            transport.suspension      = txtSuspension.Text;
            transport.gearbox         = txtGearBox.Text;
            transport.flag            = "Update";
            int Result = 0;

            Result = transportdata.AddVehicleJOBCardInfo(transport);
            if (Result > 0)
            {
                divDanger.Visible   = false;
                divwarning.Visible  = false;
                divSusccess.Visible = true;
                lblSuccess.Text     = "Vehicle Operation  Updated  Successfully";

                ClearTextBox();
                BindVehicleOperationInfo();
                pnlError.Update();
                upMain.Update();
                uprouteList.Update();
            }
            else
            {
                divDanger.Visible   = false;
                divwarning.Visible  = true;
                divSusccess.Visible = false;
                lblwarning.Text     = "Please Contact to Site Admin";
                pnlError.Update();
            }
        }
    public ServerOptionsViewModel()
    {
        Host = "localhost";
        Port = 1883;
        CommunicationTimeout = 10;

        Transports.Add(new TransportViewModel("TCP", Transport.TCP));
        Transports.Add(new TransportViewModel("WebSocket", Transport.WebSocket));
        Transports.SelectedItem = Transports.FirstOrDefault() !;

        TlsVersions.Add(new TlsVersionViewModel("no TLS", SslProtocols.None));
        TlsVersions.Add(new TlsVersionViewModel("TLS 1.0", SslProtocols.Tls));
        TlsVersions.Add(new TlsVersionViewModel("TLS 1.1", SslProtocols.Tls11));
        TlsVersions.Add(new TlsVersionViewModel("TLS 1.2", SslProtocols.Tls12));
        TlsVersions.Add(new TlsVersionViewModel("TLS 1.3", SslProtocols.Tls13));

        TlsVersions.SelectedItem = TlsVersions.FirstOrDefault() !;
    }
        public static Transports GetTransport()
        {
            Transports transport = new Transports()
            {
                ProjectNo        = "1812",
                Address          = "Address",
                AddressLatitude  = "1",
                AddressLongitude = "2",
                Id           = 1,
                CustomerName = "Customer",
                DateFrom     = new DateTime(2018, 12, 10, 12, 10, 0),
                DateTo       = new DateTime(2018, 12, 15, 12, 10, 0),
                VehicleType  = "vehicle",
                Tracker      = TrackersListStub.GetTracker()
            };

            return(transport);
        }
示例#31
0
        public TransportsInfo GetTransportInfo(Transports transport)
        {
            TransportsInfo transportInfo = new TransportsInfo()
            {
                OrderNo          = transport.Id,
                Address          = transport.Address,
                CustomerName     = transport.CustomerName,
                DateFrom         = transport.DateFrom,
                DateTo           = transport.DateTo,
                Imei             = transport.Tracker.Imei,
                ProjectNo        = transport.ProjectNo,
                TrackerName      = transport.Tracker.Name,
                VehicleType      = transport.VehicleType,
                AddressLatitude  = transport.AddressLatitude,
                AddressLongitude = transport.AddressLongitude,
            };

            return(transportInfo);
        }
示例#32
0
        protected override async Task <RPCServer> GetRPCServerAsync()
        {
            Transports = GetTransports();
            Manager    = GetManager();
            Manager.Init();
            var loopCount = 0;

            while (!Manager.IsReady() && loopCount < 30)
            {
                Core.Log.InfoBasic("Waiting for StorageManager Ready state...");
                loopCount++;
                await Task.Delay(1000).ConfigureAwait(false);
            }
            if (!Manager.IsReady())
            {
                Core.Log.Warning("The StorageManager is not on Ready state, some data couldn't be found during this state.");
            }

            if (Transports?.Any() != true)
            {
                throw new NullReferenceException("The server needs to define at least one server transport.");
            }

            RPCServer server;

            if (Transports.Length == 1)
            {
                server = new RPCServer(Transports[0]);
            }
            else
            {
                var transport = new TransportServerCollection();
                foreach (var item in Transports)
                {
                    transport.Add(item);
                }
                server = new RPCServer(transport);
            }
            server.SetCounterInfo("Cache Server", Diagnostics.Counters.CounterLevel.Framework, Diagnostics.Counters.CounterKind.Cache);
            server.AddService(typeof(IStorage), Manager);
            server.AddService(typeof(IStorageWithExtensionExecution), Manager);
            return(server);
        }
示例#33
0
        protected void btnClick_btnAddInOperation(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                transportdata          = new TransportData();
                transport              = new Transports();
                transport.VOp          = string.IsNullOrEmpty(lblOperationId.Text) ? 0 : Convert.ToInt32(lblOperationId.Text);
                transport.EndDate      = string.IsNullOrEmpty(txtEndDate.Text) ? string.Empty : (Convert.ToDateTime(txtEndDate.Text)).ToString("dd-MM-yyyy");
                transport.EndTime      = string.IsNullOrEmpty(txtEndTime.Text) ? string.Empty : (Convert.ToDateTime(txtEndTime.Text)).ToString("HH:mm");
                transport.EndKm        = string.IsNullOrEmpty(txtEndKm.Text) ? 0 : Convert.ToDecimal(txtEndKm.Text);
                transport.tollpaid     = string.IsNullOrEmpty(txtTollPaid.Text) ? 0 : Convert.ToDouble(txtTollPaid.Text);
                transport.fuelamt      = string.IsNullOrEmpty(txtFuelAmt.Text) ? 0 : Convert.ToDouble(txtFuelAmt.Text);
                transport.fuelBillNo   = string.IsNullOrEmpty(txtBillNo.Text) ? 0 : Convert.ToInt32(txtBillNo.Text);
                transport.Registerpump = Convert.ToInt32(dpRegisterpump.SelectedItem.Value);
                transport.ModifiedBy   = GlobalInfo.Userid;
                transport.ModifiedDate = DateTime.Now.ToString("dd-MM-yyyy");
                transport.flag         = "Update";
                int Result = 0;

                Result = transportdata.AddVehicleInOperationInfo(transport);
                if (Result > 0)
                {
                    divDanger.Visible   = false;
                    divwarning.Visible  = false;
                    divSusccess.Visible = true;
                    lblSuccess.Text     = "Vehicle In Operation Added  Successfully";

                    ClearTextBox();
                    BindVehicleOperationInfo();
                    pnlError.Update();
                    upMain.Update();
                    uprouteList.Update();
                }
                else
                {
                    divDanger.Visible   = false;
                    divwarning.Visible  = true;
                    divSusccess.Visible = false;
                    lblwarning.Text     = "Please Contact to Site Admin";
                    pnlError.Update();
                }
            }
        }
示例#34
0
		public Dialog(SipMessageReader response, ConnectionAddresses connectionAddresses)
		{
			this.transport = connectionAddresses.Transport;
			this.localEndPoint = connectionAddresses.LocalEndPoint;
			this.remoteEndPoint = connectionAddresses.RemoteEndPoint;

			localCseq = response.CSeq.Value;
			remoteCseq = 0;

			int length = Calculate(response, out routeCount) + response.To.Tag.Length;

			bytes = new byte[length];

			marker1 = bytes.CopyFrom(response.CallId, 0);
			marker2 = bytes.CopyFrom(response.From.Tag, marker1);
			marker3 = bytes.CopyFrom(response.To.Tag, marker2);
			marker4 = bytes.CopyFrom(response.From.AddrSpec.Value, marker3);
			marker5 = bytes.CopyFrom(response.To.AddrSpec.Value, marker4);
			marker6 = bytes.CopyFrom(response.From.Epid, marker5);
			markerN = bytes.CopyFrom(response.Contact[0].AddrSpec.Value, marker6);

			CopyRecordRoute(response);
		}
示例#35
0
		private readonly int remoteCseq; // why readonly ?!

		public Dialog(SipMessageReader request, int localTag, ConnectionAddresses connectionAddresses)
		{
			this.transport = connectionAddresses.Transport;
			this.localEndPoint = connectionAddresses.LocalEndPoint;
			this.remoteEndPoint = connectionAddresses.RemoteEndPoint;

			localCseq = 0;
			remoteCseq = request.CSeq.Value;

			int length = Calculate(request, out routeCount) + 8;

			bytes = new byte[length];

			marker1 = bytes.CopyFrom(request.CallId, 0);
			HexEncoding.GetLowerHexChars(localTag, bytes, marker1);
			marker2 = marker1 + 8;
			marker3 = bytes.CopyFrom(request.From.Tag, marker2);
			marker4 = bytes.CopyFrom(request.To.AddrSpec.Value, marker3);
			marker5 = bytes.CopyFrom(request.From.AddrSpec.Value, marker4);
			marker6 = bytes.CopyFrom(request.From.Epid, marker5);
			markerN = bytes.CopyFrom(request.Contact[0].AddrSpec.Value, marker6);

			CopyRecordRoute(request);
		}
示例#36
0
		public Trunk(string displayName, string hostname, string username, Transports transport, IPEndPoint localEndPoint, string outgoingProxy, string authId, string password, string localUri, int registerAfterErrorTimeout)
		{
			sync = new object();
			state = States.Initiliazed;
			nonce.SetDefaultValue();
			opaque.SetDefaultValue();
			errorMessage = "Connecting...";

			Username = username;
			Hostname = hostname;
			OutgoingProxy = string.IsNullOrEmpty(outgoingProxy) ? hostname : outgoingProxy;

			DisplayName = new ByteArrayPart(string.IsNullOrEmpty(displayName) ? username : displayName);
			Domain = new ByteArrayPart(hostname);
			Realm = Domain;
			Uri = new ByteArrayPart("sip:" + username + "@" + hostname);
			RequestUri = new ByteArrayPart("sip:" + hostname);
			Transport = transport;
			LocalEndPoint = (localEndPoint.Address == IPAddress.None) ? new IPEndPoint(IPAddress.Any, 0) : localEndPoint;
			AuthenticationId = new ByteArrayPart(string.IsNullOrEmpty(authId) ? username : authId);
			Password = new ByteArrayPart(password);
			RegisterDuration = 600;
			RegisterAfterErrorTimeout = registerAfterErrorTimeout;

			ForwardCallToUri = new ByteArrayPart(localUri);

			usedCSeqs = new UsedCSeq[128];

			//dialogs = new Dictionary<int, Dialogs>();
			dialogs1 = new Dictionary<int, Dialog>();
			dialogs2 = new Dictionary<int, Dialog>();
		}
示例#37
0
		public void WriteVia(Transports transport, IPEndPoint endpoint)
		{
			Write(C.Via__SIP_2_0_);
			Write(transport.ToUtf8Bytes());
			Write(C.SP);
			Write(endpoint, transport);
			Write(C._branch_);
			Write(C.z9hG4bK_NO_TRANSACTION);
			Write(C.CRLF);
		}
示例#38
0
		public void WriteVia(Transports transport, IPEndPoint endpoint, int branch)
		{
			Write(C.Via__SIP_2_0_);
			Write(transport.ToUtf8Bytes());
			Write(C.SP);
			Write(endpoint, transport);
			Write(C._branch_z9hG4bK);
			WriteAsHex8(branch);
			Write(C.CRLF);
		}
示例#39
0
		public void Write(IPEndPoint endpoint, Transports transport)
		{
			if (transport != Transports.Ws && transport != Transports.Wss)
				Write(endpoint);
			else
			{
				Write(C.i);
				Write((UInt32)endpoint.GetHashCode());
				Write(C._invalid);
			}
		}
示例#40
0
		public void WriteVia(Transports transport, IPEndPoint endpoint, int branch, ArraySegment<byte> msRecivedCid)
		{
			Write(C.Via__SIP_2_0_);
			Write(transport.ToUtf8Bytes());
			Write(C.SP);
			Write(endpoint, transport);
			Write(C._branch_z9hG4bK);
			WriteAsHex8(branch);
			Write(C._ms_received_cid_);
			Write(msRecivedCid);
			Write(C.CRLF);
		}
示例#41
0
		//public void WriteContact(SipMessageReader.ContactStruct contact)
		//{
		//    Write(C.Contact, C.HCOLON, new ByteArrayPart()
		//    {
		//        Bytes = contact.Value.Bytes,
		//        Begin = contact.Value.Begin,
		//        End = contact.AddrSpec1.Value.End
		//    });
		//    if ((contact.AddrSpec1.Maddr.IsValid == false) && (contact.AddrSpec1.xMaddrIP != IPAddress.None))
		//    {
		//        Write(C.SEMI, C.maddr, C.EQUAL, contact.AddrSpec1.xMaddrIP);
		//    }
		//    if ((contact.AddrSpec1.MsReceivedCid.IsValid == false) && (contact.AddrSpec1.xMsReceivedCid.IsValid == true))
		//    {
		//        Write(C.SEMI, C.ms_received_cid, C.EQUAL);
		//        Write(contact.AddrSpec1.xMsReceivedCid);
		//    }

		//    if ((contact._RemoveProxy == true) && (contact.ProxyReplace.IsValid == true))
		//    {
		//        Write(new ByteArrayPart()
		//        {
		//            Bytes = contact.Value.Bytes,
		//            Begin = contact.AddrSpec1.Value.End,
		//            End = contact.ProxyReplace.Begin
		//        }, new ByteArrayPart()
		//        {
		//            Bytes = contact.Value.Bytes,
		//            Begin = contact.ProxyReplace.End,
		//            End = contact.Value.End
		//        });
		//    }
		//    else
		//    {
		//        Write(new ByteArrayPart()
		//        {
		//            Bytes = contact.Value.Bytes,
		//            Begin = contact.AddrSpec1.Value.End,
		//            End = contact.Value.End
		//        });
		//    }

		//    if (contact.Expires != int.MinValue)
		//    {
		//        Write(C.SEMI, C.expires, C.EQUAL);
		//        Write(contact.Expires);
		//    }
		//    Write(C.CRLF);
		//}

		public void WriteContact(ByteArrayPart hostport, Transports transport)
		{
			Write(C.Contact, C.HCOLON, C.SP, C.LAQUOT, hostport);
			if (transport != Transports.None)
				Write(C.SEMI, C.transport, C.EQUAL, transport == Transports.Udp ? C.udp : C.tcp);
			Write(C.RAQUOT, C.CRLF);
		}
示例#42
0
		public void WriteRequestLine(Methods method, Transports transport, IPEndPoint endPoint)
		{
			Method = method;

			Write(method.ToByteArrayPart(), C.SP, C.sip, C.HCOLON);
			Write(endPoint);
			Write(C.SEMI, C.transport, C.EQUAL);
			Write(transport.ToTransportParamUtf8Bytes());
			Write(C.SP, C.SIP_2_0, C.CRLF);
		}
示例#43
0
		public void WriteContact(IPEndPoint endPoint, Transports transport, ByteArrayPart sipInstance)
		{
			WriteContact(ByteArrayPart.Invalid, endPoint, transport, sipInstance);

			//Write(C.Contact, C.HCOLON, C.SP, C.LAQUOT, C.sip, C.HCOLON);
			//Write(endPoint);
			//if (transport != Transports.None)
			//{
			//    Write(C.SEMI, C.transport, C.EQUAL);
			//    Write(transport.ToLowerUtf8Bytes());
			//}
			//Write(C.RAQUOT);
			//if (sipInstance.IsValid)
			//    Write(C.__sip_instance___, sipInstance, C.RAQUOT, C.DQUOTE);
			//Write(C.CRLF);
		}
示例#44
0
		public void WriteContact(IPEndPoint endPoint, Transports transport)
		{
			WriteContact(endPoint, transport, ByteArrayPart.Invalid);
		}
示例#45
0
		//public void WriteVia(Header header, SipMessageReader.ViaStruct via)
		//{
		//    if (header.Name.IsValid == true)
		//    {
		//        Write(header.Name, C.HCOLON, header.Value);
		//        if (via.ReceivedIP != IPAddress.None)
		//        {
		//            Write(C.SEMI, C.received, C.EQUAL, via.ReceivedIP);
		//        }
		//        if (via.MsReceivedPort != int.MinValue)
		//        {
		//            Write(C.SEMI, C.ms_received_port, C.EQUAL);
		//            Write(via.MsReceivedPort);
		//        }
		//        if (via.MsReceivedCid.IsValid == true && via.MsReceivedCid.Bytes != null)
		//        {
		//            Write(C.SEMI, C.ms_received_cid, C.EQUAL);
		//            Write(via.MsReceivedCid);
		//        }
		//        Write(C.CRLF);
		//    }
		//}

		public void WriteVia(Transports transport, ByteArrayPart host, int port, ByteArrayPart branch)
		{
			Write(C.Via, C.HCOLON, C.SP, C.SIP_2_0, C.SLASH);
			Write(transport.ToUtf8Bytes());
			Write(C.SP, host, C.HCOLON);
			Write(port);
			Write(C.SEMI, C.branch, C.EQUAL, branch, C.CRLF);
		}
示例#46
0
		public void WriteContact(ByteArrayPart user, IPEndPoint endPoint, Transports transport, ByteArrayPart sipInstance)
		{
			Write(C.Contact, C.HCOLON, C.SP, C.LAQUOT, C.sip, C.HCOLON);

			if (user.IsValid)
				Write(user, C.At);

			Write(endPoint, transport);

			if (transport != Transports.None)
			{
				Write(C.SEMI, C.transport, C.EQUAL);
				Write(transport.ToTransportParamUtf8Bytes());
			}

			Write(C.RAQUOT);

			if (sipInstance.IsValid)
				Write(C.__sip_instance___, sipInstance, C.RAQUOT, C.DQUOTE);

			Write(C.CRLF);
		}
示例#47
0
		public void WriteRecordRoute(Transports transport, IPEndPoint endpoint, ArraySegment<byte> msReceivedCid)
		{
			var scheme = (transport == Transports.Tls) ? UriSchemes.Sips : UriSchemes.Sip;

			Write(C.RecordRoute, C.HCOLON, C.SP, C.LAQUOT, scheme.ToByteArrayPart(), C.HCOLON);
			Write(endpoint, transport);
			Write(C._ms_received_cid_);
			Write(msReceivedCid);
			Write(C.SEMI, C.lr, C.RAQUOT, C.CRLF);
		}
示例#48
0
		public void WriteRecordRoute(Transports transport, IPEndPoint endpoint)
		{
			var scheme = (transport == Transports.Tls) ? UriSchemes.Sips : UriSchemes.Sip;

			Write(C.RecordRoute, C.HCOLON, C.SP, C.LAQUOT, scheme.ToByteArrayPart(), C.HCOLON);
			Write(endpoint, transport);
			Write(C.SEMI, C.lr, C.RAQUOT, C.CRLF);
		}
示例#49
0
		private void SendNonTransactionMessage(Transports transport, IPEndPoint localEndPoint, IPEndPoint remoteEndpoint, int connectionId, SipMessageWriter writer)
		{
		}
示例#50
0
		public void SetServerEndPoint(Transports transport, IPAddress address, int port)
		{
			lock (sync)
			{
				Transport = transport;
				ServerEndPoint = new IPEndPoint(address, port);
			}
		}
示例#51
0
		public void SendRequest(Transports transport, IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, int connectionId, SipMessageWriter writer, int transactionId)
		{
			TransactionUser.SendRequest(Index,
				new ConnectionAddresses(transport, localEndPoint, remoteEndPoint, connectionId), transactionId, writer, 0);
		}