/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alipay.sofa.rpc.codec.snappy;
import java.util.zip.Checksum;
/**
* A pure-java implementation of the CRC32 checksum that uses
* the CRC32-C polynomial, the same polynomial used by iSCSI
* and implemented on many Intel chipsets supporting SSE4.2.
*/
// this code was taken from Apache Hadoop
class Crc32C implements Checksum {
private static final int MASK_DELTA = 0xa282ead8;
public static int maskedCrc32c(byte[] data) {
return maskedCrc32c(data, 0, data.length);
}
public static int maskedCrc32c(byte[] data, int offset, int length) {
Crc32C crc32c = new Crc32C();
crc32c.update(data, offset, length);
return crc32c.getMaskedValue();
}
/**
* Return a masked representation of crc.
*
* Motivation: it is problematic to compute the CRC of a string that
* contains embedded CRCs. Therefore we recommend that CRCs stored
* somewhere (e.g., in files) should be masked before being stored.
*/
public static int mask(int crc) {
// Rotate right by 15 bits and add a constant.
return ((crc >>> 15) | (crc << 17)) + MASK_DELTA;
}
/**
* Return the crc whose masked representation is masked_crc.
*/
public static int unmask(int maskedCrc) {
int rot = maskedCrc - MASK_DELTA;
return ((rot >>> 17) | (rot << 15));
}
/**
* the current CRC value, bit-flipped
*/
private int crc;
/**
* Create a new PureJavaCrc32 object.
*/
public Crc32C() {
reset();
}
public int getMaskedValue() {
return mask(getIntValue());
}
public int getIntValue() {
return ~crc;
}
@Override
public long getValue() {
long ret = crc;
return (~ret) & 0xffffffffL;
}
@Override
public void reset() {
crc = 0xffffffff;
}
@Override
public void update(byte[] b, int off, int len) {
int localCrc = crc;
while (len > 7) {
int c0 = b[off++] ^ localCrc;
int c1 = b[off++] ^ (localCrc >>>= 8);
int c2 = b[off++] ^ (localCrc >>>= 8);
int c3 = b[off++] ^ (localCrc >>>= 8);
localCrc = (T8_7[c0 & 0xff] ^ T8_6[c1 & 0xff])
^ (T8_5[c2 & 0xff] ^ T8_4[c3 & 0xff]);
localCrc ^= (T8_3[b[off++] & 0xff] ^ T8_2[b[off++] & 0xff])
^ (T8_1[b[off++] & 0xff] ^ T8_0[b[off++] & 0xff]);
len -= 8;
}
while (len > 0) {
localCrc = (localCrc >>> 8) ^ T8_0[(localCrc ^ b[off++]) & 0xff];
len--;
}
// Publish crc out to object
crc = localCrc;
}
@Override
public void update(int b) {
crc = (crc >>> 8) ^ T8_0[(crc ^ b) & 0xff];
}
// CRC polynomial tables generated by:
// java -cp build/test/classes/:build/classes/ \
// org.apache.hadoop.util.TestPureJavaCrc32\$Table 82F63B78
static final int[] T8_0 = new int[] {
0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4,
0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB,
0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B,
0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24,
0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B,
0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384,
0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54,
0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B,
0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A,
0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35,
0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5,
0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA,
0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45,
0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A,
0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A,
0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595,
0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48,
0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957,
0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687,
0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198,
0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927,
0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38,
0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8,
0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7,
0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096,
0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789,
0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859,
0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46,
0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9,
0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6,
0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36,
0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829,
0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C,
0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93,
0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043,
0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C,
0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3,
0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC,
0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C,
0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033,
0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652,
0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D,
0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D,
0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982,
0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D,
0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622,
0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2,
0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED,
0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530,
0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F,
0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF,
0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0,
0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F,
0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540,
0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90,
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案 功能特性 透明化、高性能的远程服务调用 支持多种服务路由及负载均衡策略 支持多种注册中心的集成 支持多种协议,包括 Bolt、Rest、Dubbo 等 支持同步、单向、回调、泛化等多种调用方式 支持集群容错、服务预热、自动故障隔离 强大的扩展功能,可以按需扩展各个功能组件 需要 编译需要 JDK 8 及以上、Maven 3.2.5 及以上。 运行需求 JDK 8 及以上。
资源推荐
资源详情
资源评论
收起资源包目录
SOFARPC框架 v5.10.0 (1401个子文件)
com.alipay.sofa.rpc.codec.bolt.AbstractSerializationRegister 89B
com.alipay.sofa.rpc.codec.bolt.AbstractSerializationRegister 87B
com.alipay.sofa.rpc.client.AddressHolder 63B
com.alipay.sofa.rpc.client.AddressHolder 49B
com.alipay.sofa.rpc.transport.ClientTransport 127B
com.alipay.sofa.rpc.transport.ClientTransport 62B
com.alipay.sofa.rpc.transport.ClientTransport 59B
com.alipay.sofa.rpc.transport.ClientTransport 59B
com.alipay.sofa.rpc.transport.ClientTransport 54B
com.alipay.sofa.rpc.client.Cluster 103B
mvnw.cmd 5KB
com.alipay.sofa.rpc.codec.Compressor 59B
com.alipay.sofa.rpc.codec.Compressor 40B
com.alipay.sofa.rpc.client.ConnectionHolder 116B
com.alipay.sofa.rpc.bootstrap.ConsumerBootstrap 70B
com.alipay.sofa.rpc.bootstrap.ConsumerBootstrap 64B
com.alipay.sofa.rpc.bootstrap.ConsumerBootstrap 64B
com.alipay.sofa.rpc.bootstrap.ConsumerBootstrap 61B
com.alipay.sofa.rpc.bootstrap.ConsumerBootstrap 61B
com.alipay.sofa.rpc.bootstrap.ConsumerBootstrap 59B
com.alipay.sofa.rpc.bootstrap.ConsumerBootstrap 56B
selfSigned.crt 1KB
com.alipay.sofa.rpc.client.aft.DegradeStrategy 128B
com.alipay.sofa.rpc.dynamic.DynamicConfigManager 68B
com.alipay.sofa.rpc.dynamic.DynamicConfigManager 0B
com.alipay.sofa.rpc.filter.Filter 395B
com.alipay.sofa.rpc.filter.Filter 305B
com.alipay.sofa.rpc.filter.Filter 143B
com.alipay.sofa.rpc.filter.Filter 143B
com.alipay.sofa.rpc.filter.Filter 143B
com.alipay.sofa.rpc.filter.Filter 118B
com.alipay.sofa.rpc.filter.Filter 110B
com.alipay.sofa.rpc.filter.Filter 73B
com.alipay.sofa.rpc.filter.Filter 73B
com.alipay.sofa.rpc.filter.Filter 63B
com.alipay.sofa.rpc.filter.Filter 49B
com.alipay.sofa.rpc.filter.Filter 36B
.gitignore 220B
HEADER 754B
maven-wrapper.jar 47KB
Crc32C.java 42KB
RpcSofaTracer.java 37KB
AbstractCluster.java 37KB
AllConnectConnectionHolder.java 36KB
ZookeeperRegistry.java 34KB
LogCodes.java 31KB
AbstractInterfaceConfig.java 30KB
ConsumerConfig.java 27KB
Request.java 25KB
RpcConstants.java 25KB
RpcReaderExtension.java 25KB
SofaRpcSerialization.java 24KB
MeasureStrategyTest.java 24KB
JacksonSerializerTest.java 24KB
EchoRequest.java 24KB
SofaRegistryHelper.java 24KB
SnappyCompressor.java 23KB
EchoResponse.java 23KB
SofaRegistryHelper.java 23KB
RpcOptions.java 22KB
EchoRequest.java 22KB
DefaultConsumerBootstrap.java 21KB
ServerConfig.java 21KB
Response.java 21KB
RpcLookoutTest.java 21KB
ExtensionLoader.java 21KB
EchoResponse.java 21KB
SnappyDecompressor.java 20KB
EchoStrReq.java 20KB
EchoStrRes.java 20KB
DefaultProviderBootstrap.java 19KB
AsyncCallbackTest.java 19KB
MulticastRegistry.java 19KB
TripleServer.java 19KB
BoltClientTransport.java 19KB
NetUtils.java 18KB
GenericTest.java 18KB
AbstractHttp2ClientTransport.java 17KB
FailoverClusterTest.java 17KB
TripleClientInvoker.java 17KB
Http1ServerTest.java 17KB
SofaRegistryHelperTest.java 17KB
ExtensionLoaderTest.java 17KB
BoltServerProcessor.java 17KB
RestTracerAdapter.java 16KB
ZookeeperRegistryTest.java 16KB
ConsulRegistry.java 15KB
TripleHessianInvokeTest.java 15KB
LocalRegistry.java 15KB
MeshRegistry.java 15KB
AbstractInterfaceConfigTest.java 15KB
StringUtils.java 15KB
ProviderConfig.java 14KB
NacosRegistry.java 14KB
JSONSerializer.java 14KB
TripleTracerAdapter.java 14KB
PolarisRegistry.java 14KB
NacosRegistryTest.java 14KB
BeanSerializer.java 14KB
ServiceHorizontalMeasureStrategy.java 14KB
共 1401 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15
资源评论
2301_76429513
- 粉丝: 8
- 资源: 6731
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功