Ejemplo n.º 1
0
 public void connect(UInt64 connID, string path)
 {
     ClientConnection conn = connections[connID];
     //assert(f != connections.end());
     //auto & conn = f->second;
     Debug.Assert(conn.ref_id_at_client == connID); // self-consistency
     BufferT buff = platform.makeBuffer();
     IPublishableComposer composer = platform.makePublishableComposer(buff);
     PublishableStateMessageHeader mh = new PublishableStateMessageHeader();
     mh.type = PublishableStateMessageHeader.MsgType.connectionRequest;
     mh.priority = 0; // TODO: source
     mh.state_type_id_or_direction = (UInt64)PublishableStateMessageHeader.ConnMsgDirection.toServer;
     mh.path = path;
     Debug.Assert(conn.ref_id_at_client == connID);
     mh.ref_id_at_subscriber = conn.ref_id_at_client;
     GMQueue.helperComposePublishableStateMessageBegin(composer, mh);
     GMQueue.helperComposePublishableStateMessageEnd(composer);
     transport.postMessage(buff);
     conn.connection.setRequestSent();
 }
Ejemplo n.º 2
0
        public void postMessage(UInt64 connID, BufferT msgBuff)
        {
            //auto f = connections.find(connID);
            //assert(f != connections.end());
            //auto & conn = f->second;
            ServerConnection conn = connections[connID];
            Debug.Assert(conn.ref_id_at_server == connID); // self-consistency
            BufferT buff = platform.makeBuffer();
            IPublishableComposer composer = platform.makePublishableComposer(buff);
            PublishableStateMessageHeader mh = new PublishableStateMessageHeader();
            mh.type = PublishableStateMessageHeader.MsgType.connectionMessage;
            mh.priority = 0; // TODO: source
            mh.state_type_id_or_direction = (ulong)PublishableStateMessageHeader.ConnMsgDirection.toClient;
            mh.ref_id_at_subscriber = conn.ref_id_at_client;
            mh.ref_id_at_publisher = conn.ref_id_at_server;
            GMQueue.helperComposePublishableStateMessageBegin(composer, mh);

            composer.appendRaw(msgBuff.getReadIterator());

            GMQueue.helperComposePublishableStateMessageEnd(composer);
            //assert(transport != nullptr);
            transport.postMessage(buff);
        }
Ejemplo n.º 3
0
 public void subscribe(StateSubscriberBase subscriber, string path)
 {
     for (int i = 0; i < subscribers.Count; ++i)
         if (subscribers[i].subscriber == subscriber)
         {
             BufferT buff = platform.makeBuffer();
             IPublishableComposer composer = platform.makePublishableComposer(buff);
             PublishableStateMessageHeader mh = new PublishableStateMessageHeader();
             mh.type = PublishableStateMessageHeader.MsgType.subscriptionRequest;
             mh.priority = 0; // TODO: source
             mh.state_type_id_or_direction = subscriber.stateTypeID();
             mh.path = path;
             Debug.Assert(subscribers[i].ref_id_at_subscriber == (ulong)i);
             mh.ref_id_at_subscriber = subscribers[i].ref_id_at_subscriber;
             GMQueue.helperComposePublishableStateMessageBegin(composer, mh);
             GMQueue.helperComposePublishableStateMessageEnd(composer);
             //assert(transport != nullptr);
             transport.postMessage(buff);
             return;
         }
     Debug.Assert(false); // not found
 }