コード例 #1
0
        public void NewSession(Session session)
        {
            //session.IsListening = true;
            session.ErrorHandler = new FastServer.ServerErrorHandler();
            session.MessageHandler = new MessageListener();

            //register a template
            var template = new MessageTemplate(
                "Arbitry",
                new Field[]
                    {
                        new Scalar("1", FastType.I32, Operator.Copy, ScalarValue.Undefined, false),
                        new Scalar("2", FastType.I32, Operator.Delta, ScalarValue.Undefined, false),
                        new Scalar("3", FastType.I32, Operator.Increment, new IntegerValue(10), false),
                        new Scalar("4", FastType.I32, Operator.Increment, ScalarValue.Undefined, false),
                        new Scalar("5", FastType.I32, Operator.Constant, new IntegerValue(1), false),
                        /* NON-TRANSFERRABLE */
                        new Scalar("6", FastType.I32, Operator.Default, new IntegerValue(2), false)
                    });

            ITemplateRegistry registry = new BasicTemplateRegistry {{24, template}};
            session.MessageInputStream.RegisterTemplate(24, template);

            //send that template
            session.SendTemplates(registry);

            while (true)
            {
                DateTime startTime = DateTime.Now;
                for (int i = 0; i < 64000; i++)
                {
                    //make a message
                    var message = new Message(template);
                    message.SetInteger(1, 109);
                    message.SetInteger(2, 29470);
                    message.SetInteger(3, 10);
                    message.SetInteger(4, 3);
                    message.SetInteger(5, 1);
                    message.SetInteger(6, 2);

                    //send it to client
                    session.MessageOutputStream.WriteMessage(message);
                }
                double seconds = (DateTime.Now - startTime).TotalSeconds;
                Console.WriteLine(seconds);
                Console.WriteLine("MSG/S:" + (64000/seconds).ToString("0"));
            }
        }
コード例 #2
0
 public override void OnError(Session session, DynError code, string message)
 {
     session.MessageOutputStream.WriteMessage(CreateFastAlertMessage(code));
 }
コード例 #3
0
        public override void HandleMessage(Session session, Message message)
        {
            if (message.Template.Equals(AlertTemplate))
            {
                var error = (DynError) message.GetInt(2);

                if (error == DynError.Close)
                {
                    session.Close(error);
                }
                else
                {
                    session.ErrorHandler.OnError(null, error, message.GetString(4));
                }
            }
        }
コード例 #4
0
 public override Session Connect(string senderName, IConnection connection, ITemplateRegistry inboundRegistry,
                                 ITemplateRegistry outboundRegistry, IMessageListener messageListener,
                                 ISessionListener sessionListener)
 {
     var session = new Session(connection, this, TemplateRegistryFields.Null, TemplateRegistryFields.Null);
     session.MessageOutputStream.WriteMessage(CreateHelloMessage(senderName));
     Message message = session.MessageInputStream.ReadMessage();
     string serverName = message.GetString(1);
     session.Client = new BasicClient(serverName, "unknown");
     return session;
 }
コード例 #5
0
 public void OnMessage(Session session, Message message)
 {
     //Console.WriteLine("RCV TID:" + message.Template.Name);//UNCOMMENT
 }
コード例 #6
0
 public abstract void OnError(Session param1, DynError param2, string param3);
コード例 #7
0
 public abstract void HandleMessage(Session param1, Message param2);
コード例 #8
0
 public override void HandleMessage(Session session, Message message)
 {
     ISessionMessageHandler value;
     if (!MessageHandlers.TryGetValue(message.Template, out value))
         return;
     value.HandleMessage(session, message);
 }
コード例 #9
0
 protected void SetUp()
 {
     _output = new StreamWriter(new MemoryStream());
     _connection = new MyConnection(_output.BaseStream);
     _session = new Session(_connection,
                            SessionConstants.Scp10,
                            TemplateRegistryFields.Null, TemplateRegistryFields.Null);
 }
コード例 #10
0
 public void Connect()
 {
     _ses = _fc.Connect();
     _ses.ErrorHandler = new ClientErrorHandler();
     _ses.MessageHandler = new ClientMessageHandler();
 }
コード例 #11
0
 public void HandleMessage(Session session, Message message)
 {
     MessageTemplate template = _enclosingInstance.CreateTemplateFromMessage(
         message, session.MessageInputStream.TemplateRegistry);
     session.AddDynamicTemplateDefinition(template);
     if (message.IsDefined("TemplateId"))
         session.RegisterDynamicTemplate(template.QName, message.GetInt("TemplateId"));
 }
コード例 #12
0
 public void HandleMessage(Session session, Message message)
 {
     session.RegisterDynamicTemplate(_enclosingInstance.GetQName(message), message.GetInt("TemplateId"));
 }
コード例 #13
0
 public void HandleMessage(Session session, Message message)
 {
     var alertCode = (DynError) message.GetInt(2);
     if (alertCode == DynError.Close)
     {
         session.Close(alertCode);
     }
     else
     {
         session.ErrorHandler.OnError(null, alertCode, message.GetString(4));
     }
 }
コード例 #14
0
 public override Session OnNewConnection(string serverName, IConnection connection)
 {
     var session = new Session(connection, this, TemplateRegistryFields.Null, TemplateRegistryFields.Null);
     Message message = session.MessageInputStream.ReadMessage();
     session.MessageOutputStream.WriteMessage(CreateHelloMessage(serverName));
     string clientName = message.GetString(1);
     session.Client = new BasicClient(clientName, "unknown");
     return session;
 }
コード例 #15
0
 public abstract void ConfigureSession(Session param1);
コード例 #16
0
 public override void ConfigureSession(Session session)
 {
     RegisterSessionTemplates(session.MessageInputStream.TemplateRegistry);
     RegisterSessionTemplates(session.MessageOutputStream.TemplateRegistry);
     session.MessageInputStream.AddMessageHandler(FastResetTemplate, ResetHandler);
     session.MessageOutputStream.AddMessageHandler(FastResetTemplate, ResetHandler);
 }
コード例 #17
0
        public override Session Connect(string senderName, IConnection connection, ITemplateRegistry inboundRegistry,
                                        ITemplateRegistry outboundRegistry, IMessageListener messageListener,
                                        ISessionListener sessionListener)
        {
            var session = new Session(connection, this, TemplateRegistryFields.Null, TemplateRegistryFields.Null);
            session.MessageOutputStream.WriteMessage(CreateHelloMessage(senderName));
            try
            {
                Thread.Sleep(new TimeSpan((Int64) 10000*20));
            }
            catch (ThreadInterruptedException)
            {
            }

            Message message = session.MessageInputStream.ReadMessage();
            string serverName = message.GetString(1);
            string vendorId = message.IsDefined(2) ? message.GetString(2) : "unknown";
            session.Client = new BasicClient(serverName, vendorId);
            return session;
        }