Example #1
0
 public void add(SampleDispatcher dispatcher,
                 SampleHandler handler)
 {
     lock (this) {
         Entry e;
         byDispatcher.TryGetValue(dispatcher, out e);
         if (e != null)
         {
             e.check(dispatcher.getName(), dispatcher.getSignature());
             e.setHandler(handler);
         }
         else
         {
             foreach (Entry e2 in byIndex.Values)
             {
                 if (e2.match(dispatcher.getName(), dispatcher.getSignature()))
                 {
                     e2.setSampleDispatcher(dispatcher);
                     e2.setHandler(handler);
                     e = e2;
                     break;
                 }
             }
             if (e == null)
             {
                 e = new Entry(dispatcher, handler);
                 byDispatcher.Add(dispatcher, e);
             }
         }
     }
 }
Example #2
0
 public void end(SampleDispatcher identity)
 {
     WritePacked32(writer, current_tag);
     WritePacked32(writer, bytes.Length);
     bytes.WriteTo(writer);
     bytes.SetLength(0);
     writer.Flush();
 }
Example #3
0
 public Entry(SampleDispatcher dispatcher,
              SampleHandler handler)
 {
     this.dispatcher = dispatcher;
     this.name       = dispatcher.getName();
     this.signature  = dispatcher.getSignature();
     this.handler    = handler;
 }
Example #4
0
        private SampleDispatcher get(SampleDispatcher identity)
        {
            SampleDispatcher renamed;

            lock (this) {
                alias.TryGetValue(identity, out renamed);
            }
            return(renamed);
        }
Example #5
0
        public void encodeSampleRef(SampleDispatcher value)
        {
            int index = 0;

            try {
                index = ref_registry.getTag(value);
            } catch (NullReferenceException) {
            }
            WriteInt(index, 4);
        }
Example #6
0
        private SampleDispatcher add(SampleDispatcher identity)
        {
            SampleDispatcher renamed;

            lock (this) {
                if (!alias.TryGetValue(identity, out renamed))
                {
                    renamed = registry.add(identity, rename(identity.getName()));
                    alias.Add(identity, renamed);
                }
            }
            get(identity);
            return(renamed);
        }
Example #7
0
 public int add(SampleDispatcher dispatcher)
 {
     lock (this) {
         Entry e;
         byDispatcher.TryGetValue(dispatcher, out e);
         if (e == null)
         {
             e = new Entry(dispatcher, userIndex);
             byDispatcher.Add(dispatcher, e);
             userIndex++;
         }
         return(e.getIndex());
     }
 }
Example #8
0
 public int getTag(SampleDispatcher sample)
 {
     lock (this) {
         Entry e;
         byDispatcher.TryGetValue(sample, out e);
         if (e == null)
         {
             throw new Exception("'" +
                                 sample.ToString() +
                                 "' is not registered");
         }
         return(e.getIndex());
     }
 }
Example #9
0
        public void registerSampleRef(SampleDispatcher dispatcher)
        {
            int index = ref_registry.add(dispatcher);

            begin(Constant.SAMPLE_REF);
            encodePacked32(index);
            encodeIntentions(dispatcher.getName());
            byte[] signature = dispatcher.getSignature();
            encodePacked32(signature.Length);
            for (int i = 0; i < signature.Length; i++)
            {
                encodeByte(signature[i]);
            }
            end(null);
        }
Example #10
0
        public SampleDispatcher add(SampleDispatcher dispatcher,
                                    String newName)
        {
            Dispatcher result;
            Dispatcher tmp = new Dispatcher(dispatcher, newName);

            lock (this) {
                registry.TryGetValue(tmp, out result);
                if (result == null)
                {
                    registry.Add(tmp, tmp);
                    result = tmp;
                }
            }
            return(result);
        }
Example #11
0
 public virtual void end(SampleDispatcher dispatcher)
 {
     encoder.end(dispatcher);
 }
Example #12
0
 public virtual void begin(SampleDispatcher dispatcher)
 {
     encoder.begin(dispatcher);
 }
Example #13
0
 public virtual void registerSampleRef(SampleDispatcher dispatcher)
 {
     encoder.registerSampleRef(dispatcher);
 }
Example #14
0
 public void setSampleDispatcher(SampleDispatcher dispatcher)
 {
     this.dispatcher = dispatcher;
 }
Example #15
0
 public void begin(SampleDispatcher identity)
 {
     begin(def_registry.getTag(identity));
 }
Example #16
0
 public virtual void register(SampleDispatcher dispatcher,
                              SampleHandler handler)
 {
     decoder.register(dispatcher, handler);
 }
Example #17
0
 public Dispatcher(SampleDispatcher dispatcher,
                   String name)
 {
     this.dispatcher = dispatcher;
     this.name       = name;
 }
Example #18
0
 public override void registerSampleRef(SampleDispatcher dispatcher)
 {
     decoder.registerSampleRef(registry.add(
                                   dispatcher, rename(dispatcher.getName())));
 }
Example #19
0
 public void register(SampleDispatcher dispatcher,
                      SampleHandler handler)
 {
     def_registry.add(dispatcher, handler);
 }
Example #20
0
 public virtual void encodeSampleRef(SampleDispatcher value)
 {
     encoder.encodeSampleRef(value);
 }
Example #21
0
 public override void end(SampleDispatcher identity)
 {
     base.end(get(identity));
 }
Example #22
0
 public override void begin(SampleDispatcher identity)
 {
     base.begin(get(identity));
 }
Example #23
0
 public override void registerSampleRef(SampleDispatcher identity)
 {
     encoder.registerSampleRef(add(identity));
 }
Example #24
0
        public void runOne()
        {
            bool done = false;

            while (!done)
            {
                int tag    = decodePacked32();
                int length = decodePacked32();
                switch (tag)
                {
                case Constant.VERSION: {
                    String version = decodeString();
                    if (version != Constant.CURRENT_VERSION)
                    {
                        throw new IOException("LabComm version mismatch " +
                                              version + " != " + Constant.CURRENT_VERSION);
                    }
                } break;

                case Constant.SAMPLE_DEF: {
                    int    index            = decodePacked32();
                    String name             = decodeIntentions();
                    int    signature_length = decodePacked32();
                    byte[] signature        = new byte[signature_length];
                    ReadBytes(signature, signature_length);
                    def_registry.add(index, name, signature);
                } break;

                case Constant.SAMPLE_REF: {
                    int    index            = decodePacked32();
                    String name             = decodeIntentions();
                    int    signature_length = decodePacked32();
                    byte[] signature        = new byte[signature_length];
                    ReadBytes(signature, signature_length);
                    ref_registry.add(index, name, signature);
                } break;

                case Constant.TYPE_DEF:
                case Constant.TYPE_BINDING: {
                    for (int i = 0; i < length; i++)
                    {
                        decodeByte();
                    }
                } break;

                default: {
                    DecoderRegistry.Entry e = def_registry.get(tag);
                    if (e == null)
                    {
                        throw new IOException("Unhandled tag " + tag);
                    }
                    SampleDispatcher d = e.getSampleDispatcher();
                    if (d == null)
                    {
                        throw new IOException("No dispatcher for '" + e.getName() + "'" + e.getSignature());
                    }
                    SampleHandler h = e.getHandler();
                    if (h == null)
                    {
                        throw new IOException("No handler for '" + e.getName() + "'");
                    }
                    d.decodeAndHandle(this, h);
                    done = true;
                } break;
                }
            }
        }
Example #25
0
 public Entry(SampleDispatcher dispatcher, int index)
 {
     this.dispatcher = dispatcher;
     this.index      = index;
 }
Example #26
0
 public void registerSampleRef(SampleDispatcher dispatcher)
 {
     ref_registry.add(dispatcher, null);
 }
Example #27
0
 public override void register(SampleDispatcher dispatcher,
                               SampleHandler handler)
 {
     decoder.register(registry.add(
                          dispatcher, rename(dispatcher.getName())), handler);
 }