public ProtoGram(ProtoCommand command, long start, long len, string uri) { Command = command; Start = start; Length = len; UrlLength = (short)uri.Length; UrlData = Encoding.UTF8.GetBytes(uri); Status = ProtoStatus.Success; }
public override void Init() { if (Initialized) { return; } m_TimeOutInterval = 30.0f; ProtoCommand.Register(this); base.Init(); }
public object Cmd(ProtoCommand cmd, string uri, long start, long len, string file = "") { if (file == "") { file = uri; } var state = new AgentState(Config, Fs) { FileName = file, Gram = new ProtoGram(cmd, start, len, uri) }; try { var ipHostInfo = Dns.GetHostEntry(Config.Host); var ipAddress = ipHostInfo.AddressList .First(ip => ip.AddressFamily == AddressFamily.InterNetwork); var remoteEp = new IPEndPoint(ipAddress, Config.Port); var client = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); state.WorkSocket = client; client.BeginConnect(remoteEp, ConnectCallback, state); ConnectDone.WaitOne(); Send(state); SendDone.WaitOne(); Receive(state); AllDone.WaitOne(); if (state.Gram.Status == ProtoStatus.Success) { return(Complete(state)); } else { throw new ApplicationException(state.Url); } } catch (Exception e) { Abort(state, e); return(null); } }
public void Post([FromBody] ProtoCommand command) { _context.Send(_appSettings.Value.Address, command.Address, command); }