public IEventGrabber Grab(StationDesc station) { if (!_grabbeds.ContainsKey(station)) { var grabbed = new Grabbed() { { MsgType.Signal, delegate {} }, { MsgType.Link, delegate {} }, { MsgType.Block, delegate {} } }; _grabbeds.Add(station, grabbed); } return(new EventGrabber(_grabbeds[station])); }
public async Task To(StationDesc destination) { var cli = RouterConn.Client; var dstMsg = new Metro.Api.Station { Name = destination.Name, Image = destination.Image }; switch (_type) { default: break; case MsgType.Signal: { var req = new Metro.Api.TransmitRequest { Token = Token.Create(), Src = _srcMsg, Dst = dstMsg, Message = _msg }; var res = await RouterConn.Client.TransmitAsync(req); switch (res.Code) { case 200: return; case 403: throw new NotPermittedException(destination); case 404: throw new ImageNotFoundException(destination); default: throw new UnmanagedStatusCodeException(res.Code); } } case MsgType.Link: { var req = new Metro.Api.LinkRequest { Token = Token.Create(), Src = _srcMsg, Dst = dstMsg, Message = _msg }; var res = await RouterConn.Client.LinkAsync(req); switch (res.Code) { case 200: return; case 404: throw new ImageNotFoundException(destination); default: throw new UnmanagedStatusCodeException(res.Code); } } case MsgType.Block: { _blocked.Add(destination); var req = new Metro.Api.BlockRequest { Token = Token.Create(), Src = _srcMsg, Dst = dstMsg, Message = _msg }; var res = await RouterConn.Client.BlockAsync(req); switch (res.Code) { case 200: return; case 404: throw new ImageNotFoundException(destination); default: throw new UnmanagedStatusCodeException(res.Code); } } } return; }