Example #1
0
 private void _OnResponse(HTTP.Response response)
 {
     if (response != null && response.status == 200)
     {
         PackageIn pkg = new PackageIn();
         pkg.Load(response.Bytes, 0, response.Bytes.Length);
         ProtocolManager.instance.ReadMessage(pkg.code, pkg);
     }
     else
     {
         EventManager.Dispatch(this, HTTP_ERROR);
     }
 }
Example #2
0
		private void ReadPackage()
		{
			int dataAvailable = _writeOffset - _readOffset;
			do 
			{
				int len = 0;
                Array.Copy(_readBuffer, _readOffset, _pkgLength, 0, 4);
                if (BitConverter.IsLittleEndian)
                {
                    len = BitConverter.ToInt32(EdianConvert.GetConvertEdian(_pkgLength), 0);
                }
                else
                {
                    len = BitConverter.ToInt32(_pkgLength, 0);
                }
                
				dataAvailable = _writeOffset - _readOffset;
				if (dataAvailable < len || len == 0)
                {
					break;
				}

                PackageIn buff = new PackageIn(); 
				buff.Load(_readBuffer, _readOffset, len);
				_readOffset += len;
                dataAvailable = _writeOffset - _readOffset;
                HandlePackage(buff); 
			} while(dataAvailable >= PackageIn.HEADER_SIZE);
            
			if (dataAvailable > 0)
			{
                lock (_readBuffer)
                {
                    Array.Copy(_readBuffer, _readOffset, _readBuffer, 0, dataAvailable);
                }
			}
			_readOffset = 0;
			_writeOffset = dataAvailable;
		}